The Daily WTFs Sommer-Wiederholung präsentiert einen Klassiker: ein Interface, das Abstraktion für Aufzählung opfert. Der deutsche Entwickler Christian stößt auf ITableSelector im Code—ein C#-Interface, das 31 einzelne Methoden deklariert, um verschiedene Tabellen auszuwählen. Statt eines parametrierten Ansatzes (selectTable(int tableNumber)) codierte der Designer selectTable1(), selectTable2()... bis selectTable31() hart ein, wobei einige Tabellen in Varianten aufgeteilt sind (selectTable4a, selectTable4b, selectTable14a bis 14d).
Das Vergehen ist Lehrbuch-Designfehler: Das Interface sperrt Tabellennamen zur Compile-Zeit fest, eliminiert Typsicherheit und macht das Hinzufügen einer 32. Tabelle zu einer Vertragsumschreibung. Es ist das Gegenteil des Open/Closed-Prinzips. Der Code schreit nach einer einzelnen Methode, die einen Tabellenbezeichner akzeptiert—oder besser, einer echten Abstraktionsschicht.
Christians geprägter Begriff quäl-kot (Qual-Code) trifft es: Dies ist die Art von Struktur, die Wartung zur permanenten Geiselnahme macht.