Hmmm. Jetzt wo ich das einmal runtergeschrieben habe, sind doch ein paar Fragen zum Design "dazwischengerutscht"... Trotzdem ist vieles zum Theme "Code" dabei. Was haltet ihr von dieser Ergänzung?
Klarer Entwurf
- Abstrakten Entwurf des Systems anfertigen (Modellierungswerkzeuge und Karten)
- Der Einsatz von DesignPatterns zahlt sich aus (auch ohne OOP lassen sich viele Ideen übertragen)
- Den Entwurf mit dritten diskutieren
Nutzung der Typenstrenge in Pascal/Delphi Language
- Typesierte Ordinalwerte, um "selbstüberprüfende" Routinen zu schreiben (unbedachte Fälle vom Compiler "aufspüren" lassen)
- Arbeiten mit Klassen und Interfaces statt mit interpretierten Integers und Records (implementierung später ändern, bessere Integration)
Kapselung, Geheimnisprinzip
- Wenn schon keine OOP, Funktionen nach Zuständigkeiten gliedern, nicht nach einfacherer Implementierung (UseCases)
- Trampdaten vermeiden (Delegation ok, aber es muss Sinn machen, dass eine Methode/Funktion einen Parameter erhält)
- Globale Variablen/Singeltons vermeiden (Probleme bei Nebenläufigkeit), stattdessen Kontexte verwenden
Vorbedingungen und Nachbedingungen
- Konsequener und wohldurchdachter Einsatz von Exceptions (auch hier: Typen!)
- Assertions, für Programmierung "By Contract"
Testen, Debugging, Profiling
- Code für Regressionstests und Unittests vorbereiten
- Logging nach Möglichkeit generieren und nicht implementieren (Konsistenz, Übersichtlichkeit)
- Instrumentieren von Code ausschließlich über Generatoren vornehmen lassen (Übersichtlichkeit)!
Es ist nichts schlimmes, die Lösung in mehreren Iterationen zu verbessern. Auch hier ist die Hilfe dritter unbezahlbar!