Schoene Programme gesucht
Hallo! Ich bin auf der Suche nach "vorbildlichen" Python-Programmen, einfach um durch das Lesen des Programmtextes Anregungen für meine eigenen kleinen Projekte zu gewinnen. Das Problem ist nämlich das Folgende: Obwohl ich mit der Funktionalität meiner aktuellen "Projekte" (eher Fingerübungen) zufrieden mit, wächst mir (als unerfahrenem Hobbyprogrammierer) die Komplexität über den Kopf. Ich möchte also den bestehenden Programmtext umformulieren, modularisieren, Tests formulieren usw. Zwei Schwierigkeiten stehen ganz oben: Ein Progrämmchen habe ich mit Unterstützung von pylint schon mal einigermaßen in Form gebracht. Jetzt meckert er nur noch über "Too many branches (28/12)" und "Too many statements (61/50)". Da in der betreffenden Methode aber von stdin gelesen und "geparst" wird, habe ich Schwierigkeiten, die Komplexität zu reduzieren. Das zweite Programm ist eine wxPython-Anwendung mit Datenbankanbindung. Hier stört mich insbesondere, dass die "Hauptklasse", die die Anwendung repräsentiert (heißt momentan noch "MyApp" :-) ), mittlerweile _sehr_ groß geworden ist. Es handelt sich also nicht um Python-spezifische Probleme, aber da es sich um Python-Programme handelt, wäre es nützlich, sich einfach die Programme erfahrener Leute anzuschauen, um einen Eindruck zu gewinnen, wie man an diese Probleme üblicherweise herangeht. Für Hinweise auf Programmtexte, die Ihr (das ist natürlich Geschmackssache) für schön empfindet, wäre ich dankbar. Gruß, Matthias _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Matthias Kluwe:
Für Hinweise auf Programmtexte, die Ihr (das ist natürlich Geschmackssache) für schön empfindet, wäre ich dankbar.
Versuch's mal mit dem Python Cookbook (s.u.). Da ist zwar auch nicht alles schoen drin, aber es gibt doch einiges an Anregung. Gruss, Dinu -- Dinu C. Gherman - http://python.net/~gherman/PythonBooks.html ...................................................................... "The best way to predict the future is to invent it." (Alan Kay) _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
On Dinu Gherman wrote:
Matthias Kluwe:
Für Hinweise auf Programmtexte, die Ihr (das ist natürlich Geschmackssache) für schön empfindet, wäre ich dankbar.
Versuch's mal mit dem Python Cookbook (s.u.). Da ist zwar auch nicht alles schoen drin, aber es gibt doch einiges an Anregung.
Ich habe das erste Kapitel gerade gelesen und konnte immerhin schon zwei Shortcuts zur Anwendung bringen. Das war zwar ganz nett, hat mich aber nicht grundsätzlich weiter gebracht. Vielleicht habe ich ja mal Gelegenheit, in den Rest des Buches reinzuschnuppern. Davon mal abgesehen geht es mir jedoch eher um die Organisation größerer Mengen Programmtext, als sie normalerweise in einem Buch abgedruckt sind. Vielleicht traut sich ja ein Entwickler hier, auf sein eigenes Programm als Gutes Beispiel hinzuweisen. Gruß, Matthias _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Matthias Kluwe <mkluwe@web.de> writes:
Davon mal abgesehen geht es mir jedoch eher um die Organisation größerer Mengen Programmtext, als sie normalerweise in einem Buch abgedruckt sind. Vielleicht traut sich ja ein Entwickler hier, auf sein eigenes Programm als Gutes Beispiel hinzuweisen.
Ich arbeite momentan an einer neuen Version meines mit VB programmierten Bookmark-Managers¹. Diese neue Version bastle ich mit wxPython zusammen. Es handelt sich primär um ein Lernprojekt, deshalb lasse ich mir relativ viel Zeit zum experimentieren. Codemässig achte ich auf folgendes: * Schöne Trennung von GUI und Daten (Momentan über zwei Pakete Gui bzw. Data) * Unit Tests (Momentan nur für Paket Data, evtl. in Zukunft auch für Gui) * Dokumentation des Quellcodes mit epydoc Da dies mein erstes Projekt mit wxPython und mein erstes grösseres mit Python ist, habe ich keine Ahnung wie gut der von mir gewählte Ansatz skalieren wird. Aber damit du dir mal ein Bild machen kannst, habe ich die aktuelle Entwicklungsversion unter <http://sleimok.sg.ch.namics.com/~pneff/tmp/pybkm-0.1.2.tar.gz> hochgeladen. Das Projekt ist noch in einem sehr frühen Stadium (diese Mail ist der erste öffentliche "Auftritt") und verfügt momentan über folgende Features: * Verwalten von XBEL Dateien * Erstellen von Ordnern, Bookmarks und Separatoren * Drag&Drop in der Baumansicht zum Verschieben von Bookmarks Ich entwickle unter Linux und weiss deshalb nicht, ob diese Version unter Windows funktioniert. Eine frühere Version konnte ich unter Windows ausführen. Also, ein "gutes Beispiel" ist das nicht zwingend. Um Feedback bezüglich meiner gewählten Vorgehensweisen bin ich sehr froh. Und wenn jemand bei der Entwicklung helfen möchte habe ich natürlich auch nix dagegen. :-) Regards Patrice ______________ ¹ <http://bkm.sf.net/> -- Jesus answered, "I am the way and the truth and the life. No one comes to the Father except through me." (The Bible, John 14:6) _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
On Patrice Neff wrote:
Matthias Kluwe <mkluwe@web.de> writes:
Davon mal abgesehen geht es mir jedoch eher um die Organisation größerer Mengen Programmtext, als sie normalerweise in einem Buch abgedruckt sind. Vielleicht traut sich ja ein Entwickler hier, auf sein eigenes Programm als Gutes Beispiel hinzuweisen.
Ich arbeite momentan an einer neuen Version meines mit VB programmierten Bookmark-Managers¹. Diese neue Version bastle ich mit wxPython zusammen. Es handelt sich primär um ein Lernprojekt, deshalb lasse ich mir relativ viel Zeit zum experimentieren. Codemässig achte ich auf folgendes: * Schöne Trennung von GUI und Daten (Momentan über zwei Pakete Gui bzw. Data) * Unit Tests (Momentan nur für Paket Data, evtl. in Zukunft auch für Gui) * Dokumentation des Quellcodes mit epydoc
Wunderbar. Das hört sich sehr vorbildlich an und ist für mich wirklich sehr interessant. Insbesondere Unit Tests für GUI fehlen mir auch noch. Ich freue mich, dass du dich hervorgewagt hast und werde mir das Ganze mal ansehen. Alles weitere per "privater" Mail. Gruß, Matthias _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Hallo Matthias, (ich wollte die Mail zuerst wegen evtl. zu "werblichen Charakters" (s. u.) nicht an die Liste schicken, aber ich denke, dass einige sinnvolle Dinge drinstehen, die ich der Liste nicht vorenthalten will :-) ) Ich bin mir darüber im Klaren, dass es neben den unten stehenden Ansätzen/Erfahrungen auch noch andere gibt (= YMMV). On Fri, 2004-03-12 20:21:42 +0100, Matthias Kluwe wrote:
Ich habe das erste Kapitel gerade gelesen und konnte immerhin schon zwei Shortcuts zur Anwendung bringen. Das war zwar ganz nett, hat mich aber nicht grundsätzlich weiter gebracht. Vielleicht habe ich ja mal Gelegenheit, in den Rest des Buches reinzuschnuppern.
Davon mal abgesehen geht es mir jedoch eher um die Organisation größerer Mengen Programmtext, als sie normalerweise in einem Buch abgedruckt sind. Vielleicht traut sich ja ein Entwickler hier, auf sein eigenes Programm als Gutes Beispiel hinzuweisen.
Ok, ich trau mich mal ;-) Du kannst dir ftputil ( http://www.sschwarzer.net/download/ftputil-2.0.1.tar.gz ) anschauen. Sag' mir mal, ob du das übersichtlich/verständlich findest. :-) (Ok, der Testcode ist vielleicht nicht so übersichtlich. ;-) ) Der andere Code auf meiner Website ist z. T. deutlich älter und m. E. teilweise weniger gut "designt". In meinem Buch "Workshop Python" ( http://www.sschwarzer.net/python/workshop_python.html ) gibt es ebenfalls einige Beispiele, die ausführlicher sind, als die meisten Übungsaufgaben, die man in Büchern findet. Zu vielen Code-Teilen ist erklärt, warum derjenige Ansatz gewählt wurde (gegenüber Vor- und Nachteilen anderer Ansätze). Die Erklärungen zu den Programmbeispielen im Buch sind ausführlicher, als man sie normalerweise im Code schreibt, aber du kannst selbst entscheiden, wieviel Informationen du in deinem Code unterbringst. Mir ist immer wichtig, so zu schreiben, dass auch andere den Code lesen und verstehen können. (Das sollte wohl selbstverständlich sein, aber ist oft nicht so.) Der Nachteil an "zu vielen" Kommentaren kann sein, dass man den Code ändert, aber die Anpassung der Kommentare vergisst. Kommentare, die nicht zum Code passen, können sehr(!) irritierend sein. Du kannst dieses Risiko etwas verringern, indem du deine Kommentare "im Code unterbringst". Damit meine ich: Wähle beschreibende Bezeichnernamen, die dir einige Kommentare ersparen können (weil man sich schon anhand der Bezeichernamen vorstellen kann, was der Code macht). Dieses Mittel wird unhandlich, wenn die Bezeichner so lang werden, dass man dauernd Anweisungen über mehrere Zeilen verteilen muss. ;-) Eine Variante des obigen Tipps ist, komplexere Ausdrücke in kürzere zu zerlegen, wobei für jeden Teilausdruck ein aussagekräftiger Name verwendet wird. Was ich normalerweise vermeide, sind Abkürzungen als Bezeichner, außer sehr gebräuchlichen wie "attr" statt "attribute". Hier ist die Abkürzung vielleicht sogar lesbarer, weil vertrauter. Gegen Abkürzungen spricht, dass sie weniger verständlich sind (bzw. man mehr Code lesen muss, um zu verstehen, worum es geht); außerdem kann es lästig sein, wenn man beim Schreiben in Modul y überlegen muss, wie man den Bezeichner in Modul x abgekürzt hat. ;-) Viele Grüße Stefan _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Hallo! On Stefan Schwarzer wrote:
(ich wollte die Mail zuerst wegen evtl. zu "werblichen Charakters" (s. u.) nicht an die Liste schicken, aber ich denke, dass einige sinnvolle Dinge drinstehen, die ich der Liste nicht vorenthalten will :-) )
Da wird wahrscheinlich niemand etwas dagegen haben.
Ich bin mir darüber im Klaren, dass es neben den unten stehenden Ansätzen/Erfahrungen auch noch andere gibt (= YMMV).
On Fri, 2004-03-12 20:21:42 +0100, Matthias Kluwe wrote:
Davon mal abgesehen geht es mir jedoch eher um die Organisation größerer Mengen Programmtext, als sie normalerweise in einem Buch abgedruckt sind. Vielleicht traut sich ja ein Entwickler hier, auf sein eigenes Programm als Gutes Beispiel hinzuweisen.
Ok, ich trau mich mal ;-) Du kannst dir ftputil ( http://www.sschwarzer.net/download/ftputil-2.0.1.tar.gz ) anschauen. Sag' mir mal, ob du das übersichtlich/verständlich findest. :-) (Ok, der Testcode ist vielleicht nicht so übersichtlich. ;-) ) Der andere Code auf meiner Website ist z. T. deutlich älter und m. E. teilweise weniger gut "designt".
Vielen Dank für deine Antwort. Ohne ein oberflächliches Urteil abgeben zu wollen, erscheint mir ftputil auf den ersten Blick ansprechend ... kurze Methode, Aufteilung auf mehrere Module, vernünftige Fehlerbehandlung, alles Dinge, die meinem schnell zusammengeschriebenem Prototyp noch bevorstehen. Ich werde mir das genauer anschauen. Gruß, Matthias _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (4)
-
Dinu Gherman -
Matthias Kluwe -
Patrice Neff -
Stefan Schwarzer