Sind „Clean Code“ -Praktiken wirklich so sauber und nützlich? [geschlossen]

11

Ich mache derzeit ein Praktikum in einem großen Unternehmen und sie machen viele Änderungen in der Softwarebereitstellungsstruktur durch (Wechsel zu Agile).

In den letzten paar Monaten habe ich festgestellt, dass diese religiöse Bindung an Clean CodePraktiken und das Buch für die Entwickler wie eine Bibel ist.

Eines der wichtigsten Merkmale des sauberen Codes ist der selbsterklärende Code, der auf einer verständlichen Benennung und einem strengen Re-Factoring basiert. Darauf folgt die no commentingRegel.

Ich verstehe, dass dieser saubere Code eine langfristige Investition ist, die nach der Wartung und Verbesserung des Codes einfacher wird, aber ... ist das wirklich all diese Aufregung wert?

Würde jemand seine Erfahrungen mit Clean Code und jede Meinung teilen, ob ich einfach zu konservativ bin oder es nur ein vorübergehender Trend ist?

Arturs Vancans
quelle
1
Viele gute Fragen erzeugen einen gewissen Grad an Meinung, der auf Expertenerfahrung basiert. Die Antworten auf diese Frage basieren jedoch fast ausschließlich auf Meinungen und nicht auf Fakten, Referenzen oder spezifischem Fachwissen.
Mücke
4
Ich habe keine sehr hohe Meinung zu diesem Buch (trotz seines Autors). Im Allgemeinen lohnt es sich, nicht zu dogmatisch zu sein. Die meisten Programmierempfehlungen sind darauf zurückzuführen, dass sie in der Praxis funktionieren, aber nicht die absolute Wahrheit sind. Machen Sie sich also keine Sorgen. Lesen Sie weiter und fahren Sie mit dem fort, was Sie für korrekter halten, aber erfinden Sie das Rad auch nicht neu. Wahrscheinlich hat jemand, der schlauer ist als wir, bereits bessere Lösungen gefunden als wir.
DPM
2
Eine Methode mit einem Namen von 70 Zeichen macht wahrscheinlich mehr als eine Sache. SRP-Verletzung habe ich recht?!
Tombatron
1
Hier ist ein weiterer Gedanke: In 5 oder 10 Jahren, wenn Sie Entwickler in einem Unternehmen sind, das sich weniger für sauberen Code interessiert, werden Sie diese dogmatische Übung wirklich zu schätzen wissen.
Tombatron
3
Nachdem ich (kurz) unter "keine Kommentare" gearbeitet habe, bevorzuge ich es sehr, dass es eine starke Richtlinie ist als eine Regel. Es gibt Zeiten, in denen Kommentare benötigt werden - normalerweise in dunkler Geschäftslogik. Eine aufgerufene Methode CalculateFoonicityMetric()sagt Ihnen genau, was sie tut, und gut geschriebener Code zeigt Ihnen, wie ... aber keine dieser Methoden sagt Ihnen, warum . Code kann offensichtlich sein in was (multiplizieren Sie dies mit dem, dividieren Sie durch das andere Ding, quadrieren Sie es, addieren Sie dieses Bit ...), aber unklar in warum (Faktor = a * b / c; Quadrat, um negative foo zu berücksichtigen, anpassen für Drift ...). Ich freue mich über einen kurzen Kommentar, der erklärt, warum.
Anaximander

Antworten:

17

Ich verstehe, dass dieser saubere Code eine langfristige Investition ist, die nach der Wartung und Verbesserung des Codes einfacher wird, aber ... ist das wirklich all diese Aufregung wert?

Absolut.

Re-Factoring ist sehr wichtig, aber 75% Ihrer Zeit damit zu verbringen, die Methoden zu verschieben und viel Zeit damit zu verbringen, den richtigen Titel zu bestimmen, scheint nicht so produktiv zu sein.

Sicher, aber denken Sie daran, dass das große Unternehmen wahrscheinlich jahrelang oder jahrzehntelang schlechten Code zum Aufräumen hat. Es wird viel Zeit und Mühe kosten, dies zu tun.

Die Hauptsache ist, dass Sie beide Recht haben. "Clean Code" ist sehr wichtig, und Clean Code ist ein allgemein anerkannter Weg, um dorthin zu gelangen. Da das Unternehmen gerade erst auf dem Weg ist, werden sie dem Buch mehr verpflichtet sein als einer Gruppe, die mehr Erfahrung hat. Sobald sie es für eine kurze Zeit getan haben, werden sie lernen, was funktioniert und was nicht. Sobald sie das besser verstehen, werden sie (hoffentlich) einen pragmatischeren und natürlicheren Ansatz verfolgen, der sauberen Code beibehält, aber nicht zu 70 Zeichenfunktionsnamen führt.

Telastyn
quelle
4

Ich habe ursprünglich einen Kommentar geschrieben. Ich werde versuchen, weniger eine Antwort als Perspektiven zu geben. Ich unterstütze jedoch unbedingt "Clean Code" -Praktiken wie verständliches Benennen und Refactoring.

Ich habe die Regeln für keine Kommentare immer abgelehnt , da es Fälle gibt, in denen Kommentare erforderlich sind, um zukünftige Codebrüche zu verhindern. Sie sollten normalerweise darauf beschränkt sein, was getan wird und warum. Verwenden Sie sie sparsam, wenn der Code etwas Unerwartetes tut oder ein Algorithmus ersetzt werden musste.

Berücksichtigen Sie die Produktivität beim Lesen oder Verwalten von Code. Während der Lebensdauer des Codes kann dies beim Schreiben des Codes wichtiger sein als die Produktivität. Werden diese Praktiken die Produktivität bei diesen Aufgaben unterstützen?

Mit der Erfahrung sollten diese Praktiken tief verwurzelt sein und weniger ein Produktivitätskiller sein. Die Auswahl des richtigen Namens kann länger dauern, da Sie klarstellen, was der Code tun muss. (Diese Klarstellung kann das Codieren und Debuggen beschleunigen.) Führt dies zu Code, der nur das tut, was erforderlich ist, oder der weniger Fehler aufweist? Wie wirkt sich das auf die Produktivität aus?

Die Zeit, die für die Auswahl des richtigen Methodennamens benötigt wird, zahlt sich wahrscheinlich sofort aus, um den Zweck der Methode besser zu verstehen. Vergleichen Sie die Methodennamen "iterateOverCustomers" mit "locateActiveCustomers". Welches vermittelt die Absicht der Funktion? Welches lässt sich bei Bedarf leichter umgestalten?

BillThor
quelle
3
Ich möchte darauf hinweisen, dass die Regel "Keine Kommentare", die die Leute dem Clean Code-Buch gerne zuordnen, eigentlich nirgendwo im Buch steht. Im Gegenteil, es gibt ein ganzes Kapitel über Kommentare, in dessen erster Hälfte viele Arten von "guten Kommentaren" beschrieben werden, gefolgt vom Abschnitt über "schlechte Kommentare". Die Meinungen des Autors zu diesem Thema sind tatsächlich viel vernünftiger, als viele ihm zuschreiben.
Eric King
Ich habe die Regeln "Keine Kommentare" im Allgemeinen kommentiert. Ich habe in Sprachen gearbeitet, in denen Vorschläge gemacht wurden, Kommentare aus der Sprachdefinition zu entfernen. Keine Kommentare gut oder schlecht. Zu der Zeit hatten wir einen Kommentar in einem Codeblock, in dem es in einigen Fällen wünschenswert war, durchzufallen. Es gab eine Kommentarwarnung, dass dies der Fall war und zu diesem Zeitpunkt keine neuen Codeblöcke hinzugefügt werden sollten.
BillThor
Ja, das scheint mir ziemlich extrem zu sein.
Eric King