“Die Behandlung dieser einzigartigen Störung oder mehr oder weniger ihre vollständige Behandlung bleibt noch zu entwickeln.”
— Georges Gilles de la Tourette
Kennen Sie diese Entschuldigungen? “Wir hatten wenig Zeit“, “Für Reviews stand kein Kollege zur Vergütung“, “Da reglementiert uns keine Checkstyle Regel“, “Was Sonarqube nicht bemerkt, hat ausreichende Qualität“? Und natürlich die die Mutter aller Entschuldigungen “Das ist historisch gewachsen“.
Diese Kollegen sind im Privatleben vermutlich Messis, haben keinen Sinn für Ästhetik und zeigen sonderbare autistische Ticks. Anders kann man ihre Hinterlassenschaft im Source Code nicht erklären ohne pure Boshaftigkeit in den Raum zu stellen.
Integer result = 0; if (a < 0) { result = a * (-1); } else if (a >= 0) { result = a; } String x = bean.getValue() != null ? bean.getValue() : null;
Warum bleiben diese grässlichen Artefakte für Jahre bestehen? Kann man sie nicht einfach beherzt entfernen? Man mag hier, wie bei dem Tourette Syndrom, nur diese harmlosen Beispiele zeigen und keine Zeile des Codes präsentieren, der einen in den Jahren heimgesucht hat. Hier behindert das Schamgefühl den Autoren.
int result = Math.abs(a); String x = bean.getValue();
Was unterscheidet Tourette Code nun von anderen Code Smells? Anderer Code riecht nach fehlerhafter Anwendung von Pattern, ungünstigen Verteilungen von Methoden, Variablen und anderer Konstrukte, schlechter Wahl von Namen und Typen. Aber Tourette Code stinkt nach Dummheit, Ignoranz und Unwissenheit.