[Python-de] XML, Umlaute, Unicode, Projektorganisation, RPC, MPUC - Wer bietet mehr?

Stefan Schwarzer sschwarzer at sschwarzer.net
Fre Jul 25 20:41:59 EDT 2003


Hallo Gerson,

Gerson Kurz wrote:
 > 2) Unser Büdong-Projekt wächst und gedeiht; ich bin allerdings mit der
 > Organisation der Quäldateien unzufrieden. Deshalb die Anfängerfrage:
 >
 > Wie strukturiert Ihr denn größere Pythonprojekte?

ich weiß nicht, was du unter "größer" verstehst. Wir sind derzeit an einer
Web-Anwendung (Python 2.2, Webware, Apache, PostgreSQL 7), die derzeit bei
ca. 30000 Zeilen ist und bei 35000 landen könnte (gezählt mit sloccount,
http://www.dwheeler.com/sloccount/, daher ohne Leerzeilen, Kommentare etc.).
Mit find . -name '*.py' | xargs cat | wc -l kommen wir derzeit auf knapp
40000 Zeilen.

 > - Wann ist der Einsatz von Modulen angezeigt?

Wenige meiner Module sind über 500 Zeilen lang. Das ist aber nur eine
Faustregel; Kriterium ist für mich die Übersichtlichkeit in den einzelnen
Dateien und im Gesamtprojekt.

Bei kleineren Projekten neige ich dazu, zuerst mit einer einzigen Datei
anzufangen (damit man es leicht mal irgendwo hinkopieren kann bzw. nicht
mehrere Dateien zusammenhalten muss). Wenn ich so auf ein paar tausend
Zeilen gekommen bin, und so langsam die Übersicht leidet, teile ich in
Module auf. Das können dann auch gleich fünf oder so auf einmal sein.

Zu dem, was Martin sagte (Klasse pro Modul): Die Anzahl der Klassen in
einem Modul ist kein Kriterium für die Aufteilung. Wenn es "zusammenpasst",
können da auch fünf oder zehn Klassen drin stehen oder im Extremfall nur
drei kleine Funktionen. Das allermeiste ist aber objektorientiert.
Meistens finde ich es zweckmäßig, in einem Modul eine Klasse und die
dazugehörigen Hilfsklassen und manchmal auch Funktionen unterzubringen.
Wenn irgendwie möglich, vermeide ich es, dass über Modulgrenzen hinweg
auf "vertrauliche" Schnittstellen (Implementierungsdetails) zugegriffen
werden muss.

 > - Werden die Module in lib\site-packages gepackt, oder in das
 > Projektverzeichnis?

Wir haben ein eigenes Anwendungsverzeichnis auf dem Server, mit mehreren
Paketen (Tools, Fachklassen, Servlets, Mailsystem) darunter.

 > - Welches Versionskontrollesystem bietet sich (unter Windows, beim SciTE)
 > an?

Wir verwenden CVS.

 > - Eure Erfahrungen mit Unittests?

Klasse! :-) Wir haben Unittests für die meisten Tools und Fachklassen.
(In Tests von Webseiten sind wir bisher nicht eingestiegen.) Da wir
relativ viel refaktorieren bzw. während der Entwicklung der Tools und
Fachklassen refaktoriert haben), helfen die Unittests ungemein, das
System stabil zu halten.

 > 3) Ich möchte eine RPC-Schnittstelle zwischen Python und Native-C++ im
 > Netzwerk haben. Sockets, klar. Es bieten sich folgende Möglichkeiten:
 > [...]

Kann ich nichts zu sagen.

Viele Grüße
   Stefan