Notizverwaltung

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Xfd7887a
User
Beiträge: 135
Registriert: Montag 23. Juni 2014, 17:11

Ich habe jetzt meine Notizverwaltung fertig und hoffe auf viele Verbesserungsvorschläge :D

Hier der Code: https://github.com/toxinman/stuff/blob/ ... notizen.py

Danke :)
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@Xfd7887a: wie schon im anderen Thread geschrieben, gehören das Laden und Speichern Deines Notizbuchs nicht in die Controller-Klasse. Als "Datenbank" eignet sich SQLite auch besser als Pickle. Pickeldateien sollten immer im Binärmodus geöffnet werden. Ein "exit" hat außerhalb eines, naja, allem, nichts zu suchen, das macht den Programmablauf nur sehr unübersichtlich. Intern sollte ein Datum immer als Datums-Objekt und nicht als String vorliegen, das macht das Weiterarbeiten viel einfacher. Das Menü hat in main nichts verloren, das ist eindeutig Aufgabe des Controllers. Statt einer Liste für jeden Menüeintrag ist ein (Named-)Tuple die bessere Wahl. input sollte man nicht verwenden.
Du solltest noch an Deiner Fehlerbehandlung arbeiten. NotizbuchDB ist keine Datenbank, sondern eine Aufbewahrungsliste mit Ausgabefunktion: Laden und Speichern findet außerhalb statt, notiz_anlegen bekommt schon ein NotizObjekt, der Aufrufer muss also schon den Datentyp kennen, notiz_bearbeiten versteckt den Fehler vor dem Aufrufer und notiz_suchen sucht nicht, sondern gibt aus. Damit ist die ganze Logik der Klasse gar nicht in der Klasse selbst und man kann sie nicht wiederverwenden, weil man dazzu zu viel internes wissen muß und falls Du mal eine GUI schreiben willst, oder ein Web-Interface, Dir die Bildschirmausgabe überhaupt nicht weiterhilft.
Xfd7887a
User
Beiträge: 135
Registriert: Montag 23. Juni 2014, 17:11

Erstmal danke für die Antwort. Einige Fragen:
Laden und Speichern Deines Notizbuchs nicht in die Controller-Klasse
Ich denke mal, du meinst, dass sie einzelne Funktionen sind, die dann in main aufgerufen werden, oder?
Als "Datenbank" eignet sich SQLite auch besser als Pickle.
Das dachte ich mir schon, aber ich kann kein SQL, deshalb erstmal diese Notlösung. Edit: Werde ich mir aber noch anschauen.
Ein "exit" hat außerhalb eines, naja, allem, nichts zu suchen, das macht den Programmablauf nur sehr unübersichtlich.
Ja, aber wie kann ich sonst die äußere Schleife verlassen?
Das Menü hat in main nichts verloren, das ist eindeutig Aufgabe des Controllers
Die Schleife dazu auch? Muss das in die __init__ Methode?
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

Was ich versuche deutlich zu machen, ist, dass andere Funktionen und Klassen keine Kenntnis vom internen Aufbau einer Klasse haben dürfen. Das Interface sollte möglichst generisch und leicht verständlich sein. Im Idealfall solltest Du Deine NotebookDB-Klasse durch eine Klasse ersetzen können, die auf einer Datenbank aufbaut, ohne irgendeine andere Stelle im Code ändern zu müssen.
Antworten