Wann ich keine Tests schreibe
In fast jedem Projekt kommt irgendwann die Frage nach der Testabdeckung, meist verbunden mit einer Zahl, die jemand für angemessen hält. Achtzig Prozent ist beliebt. Woher die Zahl stammt, kann selten jemand sagen.
Entwickler-Blog · Notizen aus der Praxis
Notizen aus .NET, WPF, Azure und dem echten Entwickleralltag.
Aktuelle Beiträge
Aus dem Archiv
In fast jedem Projekt kommt irgendwann die Frage nach der Testabdeckung, meist verbunden mit einer Zahl, die jemand für angemessen hält. Achtzig Prozent ist beliebt. Woher die Zahl stammt, kann selten jemand sagen.
Für kleine, unveränderliche Werte ist record bequem, allokiert aber auf dem Heap. Bei einem Typ, der millionenfach durch eine Schleife läuft, ist das spürbar.
Windows meldet, dass eine Datei in Verwendung ist, verrät aber nicht von wem. Die Antwort liefert handle aus den Sysinternals:
Der Klassiker mit zwei falschen Antworten. Ein new HttpClient() pro Aufruf lässt Verbindungen im Zustand TIME_WAIT zurück und erschöpft unter Last die Ports. Ein statischer HttpClient behebt das, bekommt aber DNS-Änderungen nie mit, was beim Umschalten eines Endpunkts unangenehm auffällt.
Die verbreitete Antwort auf die Frage, wie man WPF testet, lautet gar nicht. Das war lange auch meine, und es hat mich mehrfach Abende gekostet.
Man ergänzt eine Funktion im Profil, startet neu, und nichts passiert. Meist liegt es daran, dass es mehrere Profile gibt.
Zwei Implementierungen desselben Interfaces waren im eingebauten Container immer unangenehm. Man brauchte eine Factory oder ein Marker-Interface.
Nach einem Review kommen fünf kleine Korrekturen, jede gehört zu einem anderen Commit. Von Hand ist das ein interaktives Rebase mit Sortieren.
Wer im letzten Jahr Agenten in .NET bauen wollte, stand vor der Wahl zwischen Semantic Kernel und AutoGen, wobei beide von Microsoft kamen und beide dasselbe Problem lösen sollten. Diese Doppelung ist jetzt beendet: Das Microsoft Agent Framework führt beide zusammen und hat den Release Candidate erreicht.
dotnet watch ist bei den meisten als „startet neu, wenn ich speichere” bekannt. Seit einigen Versionen versucht es zuerst, die Änderung in den laufenden Prozess zu schieben:
Nach Thema einsteigen