Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
se:lessonslearned [2012-03-29 09:53] stefan |
se:lessonslearned [2014-04-05 11:42] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Lessons Learned ====== | ||
- | ===== Probleme beim Entwickeln, die auf einen schlechten Entwurf hindeuten ===== | ||
- | * Methoden geben Arrays mit benannten Indizes (assoziative Arrays) zurück -> deutet auf die Notwendigkeit einer neuen Klasse (oder besser eines Structs) mit den Array-Indizes als Attribute hin | ||
- | * beim Entwickeln einer Klasse stellt man fest, dass sie am Besten von zwei Basisklassen erben sollte, um ihre Funktionalität zu implementieren -> die Klasse hat wahrscheinlich zu viele Verantwortlichkeiten und muss aufgeteilt werden | ||
- | * beim Erstellen von Tests für eine Klasse werden dieser Attribute/Methoden hinzugefügt, die nur vom Test benötigt werden und nicht von "normalen" Klassen -> diese Attribute/Methoden sollten eliminiert und die Vorgehensweise der Tests überdacht werden; wahrscheinlich werden Interna getestet, die besser anders geprüft werden sollten | ||
- | * Methoden in Interfaces haben unterschiedliche Abstraktionsstufen, z.B. ''LiesCsvDaten()'' (Textverarbeitung) und ''ErzeugePerson()'' (fachliche Logik). | ||
- | |||
- | ===== Tägliche Arbeit ===== | ||
- | * Man kann jede (noch so langweilige) Routine-Programmieraufgabe zu einer interessanten machen, indem man dabei neue Dinge ausprobiert, z.B. "reines" TDD, 100% Code Coverage, Mutationstesten usw. \cite{RubyRogues47} |