Seite 1 von 1
Wie Strukturiere ich mein Projekt?
Verfasst: Freitag 22. Januar 2010, 15:49
von fledermausland
Hallo allerseits,
da ich an einem, für mein Verhältnisse, größeren Projekt sitze (sind im Moment ~600 Zeilen in allen Dateien, die Meisten von euch werden darüber wohl lachen) und mir ständig selbst in die Quere komme, wüsste ich gerne ob ihr Tips zur Organisation/Struktur von Pythonprojekten habt. Mir geht's meistens so, dass ich ab und an z.B. mal eine Routine als Funktion auslagere, aber mir das dann später doch nicht passt und wieder alles ändere, nur um danach festzustellen, dass die Klasse XYZ eigentlich überflüssig ist etc...
Wie schafft ihr es, den Überblick und eine klare Struktur zu behalten? Erweiterbarkeit ist ja auch ein großer Punkt, so dass man später Funktionen hinzufügen kann ohne großartig im alten Code herumzuwurschteln.
Gruß, Marc
Verfasst: Freitag 22. Januar 2010, 16:18
von Michael Schneider
Hi,
das A und O bei größeren Projekten ist, keinesfalls mit dem Code zu beginnen!
Am Anfang sollte immer eine Beschreibung stehen, was Dein Programm leisten können soll. Das ist am Ende dann die Messlatte, ob Du auch alles drin hast.
Davon ausgehend kannst Du dann Deine Programmstruktur entwickeln und entscheiden, wie Du die Aufgaben auf Paket, Module, Klassen und Funktionen aufteilst.
Ich weiß selbst, wie schwer es ist, diszipliniert am Design zu arbeiten. Aber wie Du auch schon bemerkt hast, zahlt es sich bei größeren Projekten früher oder später garantiert aus.
Übrigens bin ich gerade dabei, eine Art Outlining-Tool für die Projektentwicklung zu schreiben. Damit soll die strukturierte Konzeptionierung eines Projekts nach dem Devide&Conquer-Prinzip durch graphische Bedienung gleichzeitig vereinfacht und beschleunigt werden.
Wenn Interesse besteht, kann ich ja übers Wochenende mal versuchen, eine Projektwebseite aufzusetzen.
VG,
Michel
Verfasst: Freitag 22. Januar 2010, 16:37
von Käptn Haddock
Michael Schneider hat geschrieben:
Wenn Interesse besteht, kann ich ja übers Wochenende mal versuchen, eine Projektwebseite aufzusetzen.
VG,
Michel
Hallo!
Ich hätte da auch Interesse dran...
Vielen Dank und Grüsse
Uwe
Verfasst: Freitag 22. Januar 2010, 18:27
von fledermausland
Natürlich besteht Interesse
Aber du hast mich übberredet: ich werf's übern Haufen und fang nochmal an, sobald ich ein richtiges Konzept habe. Das geht alles in allem wahrscheinlich sogar schneller als noch Ewigkeiten in festgefahrenem Code herumzufrickeln.
Verfasst: Sonntag 24. Januar 2010, 17:18
von bankkind
Du brauchst ja nicht alles über den Haufen werfen. Nehm den vorhandenen COde als Prototypen für das Projekt.
Verfasst: Sonntag 24. Januar 2010, 17:40
von lunar
Michael Schneider hat geschrieben:das A und O bei größeren Projekten ist, keinesfalls mit dem Code zu beginnen!
Das ist aber eine sehr absolute Aussage … eine gewisse Planung ist gewiss von Nöten, aber imho ist es immer sinnvoll einen Prototypen zu implementieren, bzw. so früh wie möglich mit der Implementierung zu beginnen.
Tatsächliche (und nicht nur
mögliche) Schwierigkeiten entdeckt man eher bei der Implementierung als beim Entwurf, insbesondere, wenn es an Erfahrung mangelt. Besser, man entdeckt und bewältigt solche Schwierigkeiten so früh möglich, als nach einer langwierigen Entwurfsphase.
Verfasst: Montag 25. Januar 2010, 02:56
von Leonidas
lunar hat geschrieben:Besser, man entdeckt und bewältigt solche Schwierigkeiten so früh möglich, als nach einer langwierigen Entwurfsphase.
Dem schließe ich mich an. Gerade Software die ewig geplant wird tendiert dazu langsam, träge und übermäßig flexibel zu sein, so dass sie zwar alles kann, aber kaum etwas was für den User benutzbar und/oder brauchbar ist. Ich schreibe einige Teile meiner Software mehrmals und erst irgendwann bin ich mit irgendeiner Fassung halbwegs zufrieden so dass man sie stehen lassen kann.
Natürlich macht ein Gewisses Maß an Planung Sinn, aber so Sachen wie Spezifikationen lesen und optimalerweise auch verstehen usw. sollte man so oder so immer früher tun um abschätzen zu können ob das Projekt überhaupt machbar ist.
Verfasst: Montag 25. Januar 2010, 11:37
von mkesper
Es handelt sich hier um verschiedene Lösungsansätze.
http://de.wikipedia.org/wiki/Wasserfallmodell würde ich auf der einen Seite einordnen, auf der anderen Seite so etwas wie
http://de.wikipedia.org/wiki/Scrum (bzw.
http://en.wikipedia.org/wiki/Scrum_%28development%29). Python eignet sich auch für die agileren Ansätze, da du weniger Code wegwerfen musst.