[Python-de] Erbitte Codekritik.
Achim Domma (Procoders)
domma at procoders.net
Mit Nov 3 16:48:59 CET 2004
Hallo Harald,
ich geb' einfach mal meinen Senf ab. Mein übliches Disclaimer: Guter
Code hängt immer von den genauen Anforderungen/Preferenzen und der
Pythonversion ab und ist natürlich auch Geschmacksache. Hier also meine
persönliche Meinung! ;-) (Alles ungetestet aus dem Kopf!)
> ---------------------------
> #!/usr/bin/python
> # -*- coding: iso-8859-1 -*-
> import re
> import string
brauchst du meiner Meinung nach nicht, siehe unten
> def datum_test(datum):
> p = re.compile(r"[^0-9]")
> datum=p.split(datum)
Senn mich nicht alles täuschst sollte
datum=re.split(r'\D',datum)
das selbe machen.
> if len(datum)!=3:
> raise ValueError('Das Datum '
> +string.join(datum,'-')+
> ' hat nicht das richtige Format!')
Ich würde die Variable datum nicht überschreiben und hier sowas machen:
raise ValueError('Das Datum %s hat nicht das richtige Format' % original)
Wenn ich z.B. 'abc 123' übergebe und du behauptest, daß 'abc-123' das
falsche Format hat, fände ich das seltsam.
> if len(datum[2])>2:
> t,m,j=datum[0],datum[1],datum[2]
> elif len(datum[0])>2:
> j,m,t=datum[0],datum[1],datum[2]
> else:
> t,m,j=datum[0],datum[1],'20'+string.zfill(datum[2],2)
> t=int(t)
> m=int(m)
[...]
Ab hier würde ich die Daten in ein date Objekt stecken und dem die
Fehlermeldung überlassen. Das Objekt würde ich dann auch zurückgeben und
der User kann es sich formatieren wie er will. Damit wird auch die
Aufgabe der Funktion eindeutig: Nimm einen Text und mach' ein Datum
daraus. Formatierung des Datums ist 'ne andere Aufgabe und gehört für
mich somit sonstwo hin.
So, ich hoffe das hat dir geholfen.
Gruß,
Achim