Hallo,
ich beschäftige mich jetzt schon seit geraumer Zeit mit Python (davor C++), habs aber nich nicht geschafft, was "größeres" zu programmieren. Bis jetzt hab ich immer nur kleinere Scripts (zum Großteil quick'n'dirty lösungen) programmiert.
Ich würd jetzt gerne mal ein größeres Projekt mit einer GUI (z.B. Filmeverwaltung, IRC-Client, Dateimanager, Bildmanager oder so) programmieren.
Ich weiß nur nie, wie ich das Projekt anfangen soll. Ich habe schon ein paar mal angefangen, aber nach paar Zeilen code alles wieder über den Haufen geworfen. Irgendwie hat mir mein eigener Code dann nicht mehr gefallen.
Die Hauptprobleme, über die ich immer wieder stolpere sind:
1. Wie programmiere ich jetzt ein Programm, das auch noch paartausend Codezeilen noch wartbar und erweiterbar ist?
2. Wie lasse ich die einzelnen Klassen interagieren?
3. Wie teile ich Code auf, d.h. welcher Code gehört in welche Funktion und zu welcher Klasse?
Vielleicht hat ein erfahrener Programmierer, wie er hier sicher anzutreffen ist, einige Tipps und Hinweise. Ich danke schonmal im voraus.
Gruß pyro
Programmierung organisieren
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wurde erst letztens hier angeschnitten: http://www.python-forum.de/topic-19793.html
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
ad 1) "Teile und herrsche" ist die Devise. Zerlege ein Problem in Teilprobleme und löse die. Das ist meist einfacher. Dann baue die Lösungen zusammen.pyro hat geschrieben:1. Wie programmiere ich jetzt ein Programm, das auch noch paartausend Codezeilen noch wartbar und erweiterbar ist?
2. Wie lasse ich die einzelnen Klassen interagieren?
3. Wie teile ich Code auf, d.h. welcher Code gehört in welche Funktion und zu welcher Klasse?
ad 2) Exaktheit bis hin zum Haare schälen (spalten ist oft nicht genug) ist eine sozial lästige aber wichtige Eigenschaft beim Programmieren. Daher interagieren selten Klassen, sondern Exemplare (manche bezeichnen das aufgrund tradierter falscher Übersetzung auch Instanzen) der Klasse.
ad 3) Finde die Objekte, die ein Problem beschreiben. Entwickle diese unabhängig von einer Darstellung. Beschreibe dein Problem mit Testfällen. Schau dir DDD (Domain Driven Design) und CRC (Class Responsiblity Collaboration) -Cards als objektorientierte Entwurfsmethoden an. Martin Fowlers Büchlein UML-kompakt gibt eine gute Einführung nicht nur in die UML-Notation (was IMHO nicht weiter interessant ist) sondern erwähnt auch Dinge wie CRC-Cards.
Stefan