Viele verschachtelte Schleifen und PEP8

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Montag 1. September 2008, 10:44

Der Ansatz mit der Klasse und der __init__ hatte ich desshalb, weil ich eine liste mit keys bekomme (jeder key stellt ein bestimmtes pdb dar) und ich dazu dann mit bestimmten kriterien pdb's erstelle. Der Ablauf aber immer der selbe ist. Ich dachte dann brauch ich nicht nochmal eine extra Funktion zu definieren. Ich kann auch nochmal eine Funktion bestimmen die die Daten letzendlich holt, aber dachte das kommt dann aufs selbe raus. So spare ich mir später eine Zeile beim Objekt erzeugen.

Biopython kenne ich. Ich importiere auch teilweise Pakete davon.
Da ich aber ein modifiziertes PDB schreibe kann ich nicht so viel davon verwenden oder konnte es bis jetzt noch nicht nach meinen Vorstellungen umbauen.


@snafu
Welche Nachteile bringt es denn mit sich?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 1. September 2008, 10:49

Eine gute Idee ist es bereits, nicht etwas in große if-Blöcke zu stecken, sondern mit einer gegenteiligen Abfrage vorzeitig aus dem umgebenden Block zu springen (``if not foo: continue``) - das machst du ja bereits.

Mehrere if-Verschachtelungen kannst du auch zusammenfassen, (``if foo and (bar == 'tralala'): ...``), was jedes Mal mindestens eine Einrückungsebene spart.

Zudem empfehle ich dir zu prüfen, ob du nicht gewinnbringend ``filter`` bzw. ``itertools.ifilter``/``itertools.ifilterfalse`` und weitere funktionale Konstrukte einsetzen kannst. Das scheint sich mir bei deinem Code zu lohnen. So kannst du im Vorfeld Elemente aussortieren und hast weniger Logik in einem evtl. verbleibenden "Hauptloop".
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Montag 1. September 2008, 11:52

würmchen hat geschrieben:@snafu
Welche Nachteile bringt es denn mit sich?
Ich hatte etwas Ähnliches wie snafus Frage bereits aus meinem Post gestrichen. Also ich finde eine Klasse hier auch nicht unbedingt gerechtfertigt. Nachteile? Nicht unbedingt. Aber was sind die Vorteile etwas in eine Klasse zu packen, dass da semantisch nicht hin gehört? Das das da "nicht hin gehört" schreibst Du selber durch den Namen Deiner Klasse, der sagt "ich bin eine Funktion und mache etwas" und nicht "ich bin eine Klasse und enthalte etwas". Aber vielleicht liegt mein Empfinden nur daran, dass ich den Rest vom Code nicht kenne.

Was ich machen würde ist eine Modell-Klasse zu entwerfen, deren Objekte sich ggf. aus der Datenbank initialisieren und Schreibmethoden für Deine Ausgabefiles haben.

Gruß,
Christian[/url]
Antworten