Nachdem zu Inversion of Control und Dependency Injection auf dem Open Space in Ulm keine Fragen mehr kamen, handelten wir spontan noch zwei andere Themen ab:
Mocking
- "normale" Frameworks wie z.B. Rhino Mocks nutzen Proxy-Mechanismusmit Vererbung
- Problem: statische Klassen sind nicht mockbar
- Typemock erlaubt Nutzung der Profiler-API; dadurch auch Mocking statischer Objekt möglich (Date.Now trotzdem nicht)
- Frameworks mit Automock-Funktionalität ermöglichen es, dynamisch zu mocken, was gerade benötigt wird
- RhinoMocks nutze früher Record-Replay-Modus, heutiges Prinzip ist Arrange-Act-Assert
- siehe auch: Einfacheres Mocken von Eigenschaften eines Objektes
Interfaces
- Interfaces verhindern, dass man "virtual" vergisst
- abstrakte Basisklassen können bereits Funktionalitäten implementieren
- Methoden abstrakter Basisklassen können ggf. überschrieben werden, MÜSSEN sie aber nicht
- Interfaces erfordern bei Erweiterung neue Methoden in allen von ihnen abgeleiteten Klassen
- Methoden von Interfaces müssen nicht implementiert werden, wenn die Basisklassen sie bereits implementieren
- Kommentare zu Methoden des Interfaces sollten per Konvetion dort im Interface geschrieben werden, nicht in der Implementierung
- alternativ können mit ghostdoc Kommentare von beerbten Objekten kopiert werden
Fazit
Mein Highlight der zweiten Hälfte der Session waren das Beispiel für das neue Arrange-Act-Assert-Schema bei RhinoMocks sowie der Verweis auf ghostdoc. Dieses Tool kann ich nur wärmstens empfehlen, um automatische Dokumentationskommentare zu generieren. Meist sind sie relativ treffend, falls nicht, sind sie dann zumindest lustig.
Kommentare