Zwei Sonderformen verdienen eine eigene Betrachtung, weil sie sich in fast jedem gewachsenen Projekt finden â und weil beide gut gemeint anfangen.
Der TODO-Friedhof
Ein // TODO ist ein Versprechen an die Zukunft. In den meisten Projekten ist es ein gebrochenes:
// TODO: Fehlerbehandlung verbessern
// TODO: refactoren
// HACK: geht auch schöner
// FIXME: funktioniert nicht bei SchaltjahrenNach zwei Jahren stehen dreihundert davon im Projekt. Niemand liest sie, niemand löscht sie, und ein tatsÀchlich wichtiger Hinweis geht darin unter.
Das Problem ist nicht das TODO selbst, sondern dass es keinen EmpfĂ€nger hat. Ein brauchbares TODO nennt drei Dinge â was, warum, und wo es nachverfolgt wird:
Ohne EmpfÀnger
// TODO: refactorenMit EmpfÀnger
// TODO(SHOP-1487): Auf die
// Batch-Schnittstelle umstellen,
// sobald der Anbieter sie
// freigeschaltet hat â einzeln
// dauert der Nachtlauf 40 min.Rechts kann man entscheiden, ob es dringend ist. Links kann man nur raten â deshalb tut es niemand.
Die hÀrtere Variante
Manche Teams verbieten TODOs im Hauptzweig ganz: Was wichtig ist, wird ein Ticket; was nicht wichtig genug fĂŒr ein Ticket ist, wird gelöscht. Das ist strenger als nötig, aber es hĂ€lt den Code ehrlich â und ein Analyzer kann es durchsetzen.
#region
#region faltet Codeblöcke in der IDE zusammen. Das klingt nach Ordnung und ist meistens das Gegenteil:
public class KundenService
{
#region Felder
âŠ
#endregion
#region Ăffentliche Methoden
⊠// 600 Zeilen, eingeklappt
#endregion
#region Private Hilfsmethoden
âŠ
#endregion
}Eingeklappt sieht die Klasse aufgerĂ€umt aus. Ausgeklappt sind es tausend Zeilen. Die Region hat nichts geordnet â sie hat das Problem unsichtbar gemacht, und zwar genau fĂŒr die Person, die es sonst bemerkt hĂ€tte.
Regionen, die nach Sichtbarkeit gruppieren (Felder, Eigenschaften, Methoden), liefern ausserdem keine Information: Das sieht man den Elementen an. Wenn eine Klasse Regionen braucht, um ĂŒberschaubar zu bleiben, ist sie zu gross â und der Ausweg heisst nicht Falten, sondern Teilen.
Was ĂŒbrig bleibt
Als Faustregel fĂŒr den Alltag:
| Kommentartyp | Urteil |
|---|---|
| Wiederholt den Code | löschen |
| ErklÀrt einen schlechten Namen | Namen Àndern, Kommentar löschen |
| Ăberschrift innerhalb einer Methode | Methode extrahieren |
| Auskommentierter Code | löschen â Git erinnert sich |
| Changelog im Dateikopf | löschen â git log erinnert sich |
| ErklÀrt das Warum | behalten |
| Warnt vor einer plausiblen FehlÀnderung | behalten |
| Verweist auf Spezifikation, Ticket, Norm | behalten |
<exception> und Vorbedingungen einer öffentlichen API | behalten |
Die kurze Fassung: Ein Kommentar, der etwas sagt, was der Code sagen könnte, ist ein Fehler. Ein Kommentar, der etwas sagt, was der Code nicht sagen kann, ist wertvoll.