So etwas wie Clean Code gibt es nicht
(steveonstuff.com)- Menschen bemühen sich um „sauberen“ Code, aber „sauber“ ist kein nützlicher Maßstab
- Code kann nicht einfach nur „sauber“ sein, weil „sauber“ bei Code eigentlich nichts erklärt
- Wenn Menschen sagen, Code sei sauber, meinen sie meist, dass der Code in irgendeiner Hinsicht hervorragend ist
Ist Clean Code wirklich guter Code?
-
Code kann aus vielen Gründen hervorragend sein
→ leicht zu lesen, leicht zu verstehen, einfach, performant, sicher, elegant, testbar, gekapselt, erweiterbar, wartbar, wiederverwendbar .. -
Diese Eigenschaften stehen jedoch in mancher Hinsicht miteinander im Konflikt
→ Der einfachste Code ist vermutlich nicht zugleich am leichtesten zu testen
→ Interfaces und injizierte Abhängigkeiten machen Tests bequem, sind aber weit von Einfachheit entfernt
→ Wenn man viele Singletons verwendet, ist der Code vielleicht leicht zu verstehen, aber die Anwendung ist womöglich nicht gut wartbar -
Einige davon stehen sich grundsätzlich entgegen, sodass es schwierig sein kann, sie alle gleichzeitig zu erfüllen
→ Engineering bedeutet Trade-offs; deshalb kann es sinnvoll sein, diese Abwägungen im Team zu diskutieren
Wenn Code hervorragend ist, sollten wir darüber sprechen, "warum"
- Wenn jemand sagt, eine Lösung sei „sauber“, kann diese Person den Grund oft nicht wirklich begründen und sagt nur, dass sie die bessere Wahl sei
- Um konstruktiv über technische Lösungen zu diskutieren, muss man klar erklären können, warum eine Lösung besser ist als eine andere
→ Statt einfach „sauber“ zu sagen lieber „entkoppelt, leicht verständlich, gut testbar …“
Wir müssen präzise Begriffe verwenden
- Programmieren ist im Allgemeinen ein Teamsport. Wenn man allein hackt, kann man machen, was man will, aber wenn man im Team arbeitet, muss man Ideen diskutieren
- Mit einer bestimmten Sprache über technische Lösungen zu sprechen und ein gemeinsames Verständnis im Team zu haben, ist sehr wichtig, um einander zu verstehen
- Der Begriff „Clean Code“ bedeutet für jede Person etwas anderes
→ Für manche ist die Architektur gut definiert, für andere ist der Code schlicht mit einem konsistenten Formatierungsstil geschrieben .. - Wörter wie „gekapselt“, „testbar“ oder „wiederverwendbar“ haben Bedeutungen, auf die wir uns alle einigen können
- Wenn wir konkretere Wörter verwenden, um Eigenschaften von Code zu beschreiben, können wir sicherer sein, dass wir vom Gleichen sprechen
- „Sauber“ ist ungefähr so präzise wie „gut“
Was ist dann „Clean Code“?
-
Ich bin zu dem Schluss gekommen, dass ich Code dann als „sauber“ bezeichne, wenn ich oft denke: „Der Code ist zwar gut, aber ich bin mir nicht völlig sicher, warum“
→ Oder wenn ich zwar weiß, warum der Code gut ist, aber kein Wort finde, das es klar beschreibt -
Solche Intuition zu entwickeln ist gut, aber man sollte dort nicht stehen bleiben. Man sollte tiefer graben und verstehen wollen, „warum dieser Code gut ist“
→ Hat dieser Code eine bestimmte Eigenschaft, die anderen fehlt? Und passt diese Eigenschaft wirklich am besten zu unserem Projekt? Vielleicht ist es am Ende gar nicht die richtige Lösung -
Ich hoffe, wir können sicher sagen, dass wir nicht Clean Code brauchen, sondern ______ Code
6 Kommentare
Vielen Dank für den guten Artikel ~~
Tritt nicht leichtfertig gegen Legacy-Code
Hast du jemals auch nur ein einziges Mal die erste Anforderung erfüllt?
Da stimme ich zu.
In „jenem Buch“ lag der Fokus dessen, was der Autor als Clean Code bezeichnete, wohl auf „leicht verständlich“ und „testbar“. Natürlich halte ich beides für sehr wichtige Maßstäbe. Aber wegen noch nicht standardisierter Spezifikationen oder unvollständiger Bibliotheken greift man mitunter zu sogenannten „Hacks“, und insofern scheint es unvermeidlich zu sein, für die Qualität des Programms an manchen Stellen auf die Qualität des Codes zu verzichten.
Dem stimme ich zu. Wenn man „clean“ als „hochwertig“ versteht, dann ist Qualität – wie Weinberg sagte – etwas, das für jemanden von Wert ist, deshalb denke ich, dass es im Team Maßstäbe und eine Definition für Qualität geben muss.
Dies ist ein Artikel, der dafür plädiert, nicht vage von „Clean Code“ zu sprechen, sondern die Dinge konkret beim Namen zu nennen.
Dazu gibt es auch auf Hacker News verschiedene Meinungen darüber, wie „Clean Code“ zu verstehen ist. Schaut euch auch die Kommentare an.
There’s No Such Thing as Clean Code https://news.ycombinator.com/item?id=30111516
Das Thema ist etwas anders gelagert, aber als Referenz lohnt sich auch der folgende ältere Beitrag.