Hat die Besessenheit, Code hübsch aussehen zu lassen, irgendeinen Vorteil?

34

Manchmal verbringe ich lächerlich viel Zeit (Stunden) damit, Code "hübsch aussehen" zu lassen. Ich meine, die Dinge symmetrisch aussehen zu lassen. Ich werde tatsächlich schnell durch eine ganze Klasse scrollen, um zu sehen, ob etwas herausspringt, das nicht "hübsch" oder "sauber" aussieht.

Verschwende ich meine Zeit? Gibt es einen Wert in dieser Art von Verhalten? Manchmal ändert sich die Funktionalität oder das Design des Codes nicht einmal. Ich strukturiere ihn einfach neu, damit er besser aussieht.

Bin ich nur total Zwangsstörung oder verbirgt sich ein Vorteil darin?

TaylorOtwell
quelle
8
Ich benutze einfach Strg-E, D;)
Stadt
1
Wenn dies einen Durchlauf mit den Formatierungsregeln des Unternehmens nicht überlebt, ist der Vorteil ziemlich gering.
2
Warum nicht ein Programm zum automatischen Formatieren Ihres Codes erstellen, damit Sie zufrieden sind und keine Zeit verlieren?
Jetti
1
Das Formatieren macht es lesbar, damit es wichtig ist, aber auf jeden Fall "schlau" - verwenden Sie die automatischen Formatierer. Wenn diese Formatierung nicht gut genug ist, sind Sie an diesem Punkt möglicherweise OCD.
Catchops
1
@ Taylor Ihr Laravel-Framework ist erstaunlich hübsch
Mr.Web

Antworten:

32

Verwenden Sie einen Auto-Formatierer. Wenn Sie wirklich so viel Zeit damit verbringen, den Code manuell zu bearbeiten, würde ich vermuten, dass Sie nicht sehr herausgefordert / gelangweilt sind, da es absolut keinen Grund dafür gibt. Strg + K, Strg + D in VS formatiert ein gesamtes Dokument. Sie können so etwas wie Style Cop verwenden, wenn Sie etwas mehr Schwergewicht wollen.

Es ist gut, stolz auf Ihren Code zu sein, aber nicht, wenn es darum geht , intelligent zu sein (nach der effizientesten Lösung zu suchen. In diesem Fall ein Tool zur Automatisierung eines langwierigen Prozesses zu verwenden) und Dinge zu erledigen (was auch immer möglich ist) Sie haben in diesen Stunden gearbeitet?).

Morgan Herlocker
quelle
1
Warum der fettgedruckte zweite Absatz?
Steven Jeuris
5
@FrustratedWithFormsDesigner: Es ist keine Betonung, wenn die Hälfte des Beitrags hervorgehoben wird. : P
Jon Purdy
2
@Steven, @Jon - notiert und bearbeitet.
Morgan Herlocker
3
Etwas ironische Kette von Kommentaren. ;)
TaylorOtwell
2
@StuperUser, eher faul und immer Dinge automatisiert :)
10

Wenn Sie nichts ändern, was ein besseres Verständnis ermöglicht, dann verschwenden Sie Ihre Zeit.

Whatsisname
quelle
3
+1: Gesamtabfall. Andere Leute haben andere Meinungen und sind hübsch und formatieren Ihren Code neu und schreiben auch klagende Fragen darüber, warum Sie nicht ihrer idealen Formatierung folgen.
S.Lott
Wenn Sie den gesamten Code in eine Zeile setzen, ändert dies zwar nichts an der Funktionalität, die Verwendung von Zeilenumbrüchen macht ihn jedoch verständlicher.
Steven Jeuris
@Steven Jeuris: Sprichst du über Verschleierung? Wenn ja warum? Die Frage klang nicht so. Es klang nach Zeitverschwendung. Woher kam die Idee, dass der Code so schlecht formatiert war, dass er nicht lesbar war?
S.Lott
@S.Lott: Nein ich spreche nicht von Verschleierung. Das Einfügen des gesamten Codes in eine Zeile wäre eine schreckliche Verschleierung. :) Ich habe versucht , den Punkt zu machen , dass , während nicht ‚Ändern‘ alles, es kann damit Sie den Code besser zu verstehen. Schauen Sie sich Nevilles Antwort an, um eine genauere Erklärung zu erhalten. Ps: Außerdem glaube ich, dass dies eine wirklich leere Antwort ist. Natürlich, wenn Sie etwas ändern, das es Ihnen nicht erlaubt, den Code besser zu verstehen, ist das nutzlos, aber sehr subjektiv, und das ist eigentlich die Frage.
Steven Jeuris
6

Nichts verborgenes, hübscher Code ist einfach zu lesen und zu warten.

"Hours" scheint allerdings etwas übertrieben, es sei denn, Sie haben eine riesige Codebasis. Nicht alles muss perfekt sein, es muss nur gut sein

Tom Squires
quelle
5

Es ist eine Frage des Urteils. Wenn Sie Stunden verbringen, würde ich sagen, dass Sie übertrieben sind. Es gibt jedoch Dinge, die ein Mensch tun kann, die ein Auto-Formatierer nicht kann, und Dinge, die Sie tun können, um Ihren Code lesbarer zu machen, die in den Kodierungsstandards von Unternehmen nur schwer zu erfassen sind.

Wenn ich zum Beispiel Variablen in einer Klasse deklariere, mag ich logische Gruppierungen - das macht es einfacher, der Logik zu folgen.

Code wird in der Regel als "einmal schreiben, viele lesen" betrachtet, daher ist es eine gute Angewohnheit, das Leseerlebnis angenehm zu gestalten - aber das Layout ist meiner Meinung nach weit weniger ein Problem als klare Namenskonventionen, saubere Abstraktionen und gut strukturierte Methodensignaturen.

Ich habe wunderschön formatierten Code gesehen, der schwerwiegende WTF-Momente verursachte, weil der zugrunde liegende Denkprozess fehlerhaft war. Wenn Sie Stunden zu verbringen haben, würde ich es für Design und Refactoring ausgeben, anstatt Layout ...

Neville Kuyt
quelle
Sie haben mich daran gehindert, meine eigene Antwort zu schreiben. ; p Sehr gut gesagt!
Steven Jeuris
+1 für die Feststellung, dass Struktur- und Namenskonventionen das Format an Bedeutung übertrumpfen.
Morgan Herlocker
4

Nein, Sie sind nicht völlig Zwangsstörung. Das größte Kompliment, das ich je als Programmierer gehört habe, war: "Ihr Code ist so sauber, dass mein kleiner Bruder es herausfinden könnte."

Eines Tages wird jemand Ihren Code unterstützen müssen. Sauberer Code ist viel einfacher zu unterstützen. Und eines Tages könnten Sie es sein. In 6 Monaten oder einem Jahr wirst du dich nicht erinnern, was du getan hast. Aber wenn es sauber und leicht zu lesen ist, kommt es schnell wieder.

Das heißt, wenn der Code Müll ist, hilft es nicht, hübscher Müll zu sein. Aber wenn es gut strukturiert ist und nur Funktionsprobleme aufweist, ist es viel einfacher, die Funktionalität zu verbessern.

SoylentGray
quelle
3

Nein - davon besessen zu sein, Code hübsch aussehen zu lassen, bringt nichts .

Hier sind einige Weisheiten, die ich nützlich fand:

Fragen Sie, warum Code aufgeräumt werden muss.

Sie können Ihre Zeit je nach Ihrer Definition von hübsch verschwenden oder auch nicht.

Der Grundsatz der Formatierung besagt, dass ein gutes visuelles Layout die logische Struktur des Programms zeigt. Den Code hübsch aussehen zu lassen ist etwas wert, aber es ist weniger wert, als die Struktur des Codes zu zeigen. [S. 732, Code Complete 2nd Edition, Steve McConnell]

Wenn Sie das Concurrent Versions System verwenden, um Änderungen im Code nachzuverfolgen - Mischen Sie Änderungen in der Code-Formatierung nicht mit Änderungen in der Logik / beim Hinzufügen von Funktionen innerhalb desselben Commits.

Dies erschwert das Erkennen von Änderungen und führt zu unnötigen Zusammenführungskonflikten, wenn andere Teammitglieder die Datei bearbeiten. Wenn Sie Formatierungsänderungen vornehmen müssen, stellen Sie sicher, dass andere Teammitglieder nicht an dieser Datei arbeiten. [Paraphrasiert, S. 93, Pragmatische Versionskontrolle mit Subversion, 2. Auflage]

Auch Martin Fowler spricht davon, zwei Hüte zu tragen und den ganzen Tag zwischen ihnen zu wechseln. Ein Hut zum Hinzufügen von Features, ein Hut zum Refactoring.

  1. Sie ziehen in Betracht, eine neue Funktion hinzuzufügen (Feature Hat).
  2. Sie lesen den vorhandenen Code durch, um beim Aufräumen Verständnis zu erlangen. (Refactoring Hat)
  3. Übernehmen Sie die Änderungen.
  4. Fügen Sie die Funktion hinzu. (Feature Hat) und so weiter ....

[Paraphrasierte Seite 57, Refactoring, Martin Fowler]

Versuchen Sie also nicht stundenlang, die gesamte Codebasis zu verschönern. Machen Sie einfach genügend Code fertig, um die nächste Funktion hinzuzufügen.

Kurz gesagt ... lassen Sie jeden Code in einem schöneren Zustand als bei Ihrer Ankunft.

JW01
quelle
2

Wenn es sich um eine reine Formatierung handelt, ist es wahrscheinlich besser, wenn Sie einem hübschen Drucker beibringen, wie Ihr Code formatiert werden soll. Das ist im Vorfeld etwas kostspielig, aber ich kann mir vorstellen, dass Sie diesen Timer in 2-3 Anwendungen wieder gutmachen werden.

Wenn es sich tatsächlich um ein Refactoring handelt, möglicherweise nicht. Konzeptionell sauberer Code ist in der Regel einfacher zu modifizieren und "immer sauber" zu haben, verringert die Versuchung, etwas durchzulassen, nur weil es anderen stinkenden Code gibt.

Vatine
quelle
1

Es hilft ein wenig, aber es lohnt sich nicht, viel Zeit damit zu verbringen. Stellen Sie außerdem sicher, dass Ihre Verbesserungen auch Variablenbereich, RAII, Gruppenkopie / eingefügten Code usw. hinzufügen. Wenn Sie dies alles tun, wird es 1000x einfacher, wenn Sie verstehen müssen, was der Code nach einem Jahr oder so tut.

Coder
quelle
1

Sie sollten sauberen Code produzieren, aber es sollte nicht Stunden dauern.

Für C gibt es das Gnu-Programm Gnu-indent Gnu-indent , in Eclipse, zumindest ein CodeFormatter für Java, und ich denke , es gibt Werkzeuge für die meisten anderen Sprachen auch. Es sollte ein paar Klicks dauern, um eine Datei korrekt einzurücken, und ein paar Minuten, wenn Sie die Regeln für bestimmte Zwecke verletzen möchten - wie ich es für kurze switch-case-Anweisungen tue:

 switch (foo) {
      case a:  foo (a);             break; 
      case b:  foob ();             break;
      case c:  /* intent. empty */
      case d:  foocd ();            break; 
      default: allPrettyAligned (); break; 
 }

das ist schwer zu spezifizieren.

Benutzer unbekannt
quelle
1

Wenn Sie denken, dass etwas sauber aussieht, indem Sie es überfliegen, konzentrieren Sie sich auf etwas Oberflächliches, das automatisiert werden kann.

Lesen Sie diesen klassischen Artikel zum Thema "Falscher Code sieht falsch aus", und Sie werden genau erkennen, warum die Leute Einrückungen (die automatisch ausgeführt werden können) für gewöhnlich für trivial halten:

http://www.joelonsoftware.com/articles/Wrong.html

Insbesondere diese Liste:

OK, bis jetzt habe ich drei Leistungsstufen als Programmierer erwähnt:

1. Sie wissen nicht, sauber von unrein.

2. Sie haben eine oberflächliche Vorstellung von Sauberkeit, vor allem in Bezug auf die Einhaltung der Kodierungskonventionen.

3 . Unter der Oberfläche riechen Sie subtile Anzeichen von Unreinheit, und diese stören Sie so sehr, dass Sie nach dem Code greifen und ihn reparieren können.

Es gibt jedoch eine noch höhere Ebene, worüber ich wirklich sprechen möchte:

4. Sie erstellen Ihren Code absichtlich so, dass Ihre Unreinheitswahrscheinlichkeit die Richtigkeit Ihres Codes erhöht.

Das ist die wahre Kunst: Robusten Code erstellen, indem buchstäblich Konventionen erfunden werden, mit denen Fehler auf dem Bildschirm auffallen.

StuperUser
quelle
0

"Std"? Nun, ich würde sagen, Ihre Antwort ist "und", nicht "oder": Ja, Sie sind Zwangsstörung, aber das hat einen gewissen Vorteil.

Wahrscheinlich.

Erleichtert es das schnelle Lesen Ihres Codes? Erleichtert es das Überfliegen, herauszufinden, was wo stoppt und beginnt, Funktionen, Variablen usw. zu finden? Macht es die Funktionsweise Ihres Codes klarer? Zwingt Sie der Prozess des Aufmachens dazu, einige Entwurfsentscheidungen zu überdenken und toten Code oder halbfertige Lösungen, die Sie letztendlich aufgegeben haben, zu entfernen? Wenn ja, hat es absolut Wert.

Auf der anderen Seite, wenn Sie eine perverse Art gefunden haben, Ihren eigenen Sinn für Ästhetik zu erreichen, ohne Ihren Code wirklich einfacher zu bearbeiten, dann ist es eine große Zeitverschwendung.

Was mich angeht, neige ich dazu, selbst auf das OCD-Ende zu fallen - aber ich werde nicht aufhören. Das Bereitstellen von Dokumentation für eine Klasse oder Funktion zwingt mich, darüber nachzudenken, wie das Ding wirklich funktioniert - ich schreibe es, damit es schließlich jemand, der nicht ich bin, verstehen kann. Und wenn ich eine Reihe von Warnungen und Vorbehalten auslasse und mich dafür entschuldige, dass der Code so funktioniert, wie er funktioniert, dann ist das eine ziemlich starke Warnung, die eine weitere Optimierungsrunde erfordert, bevor ich ihn für beendet erkläre.

BlairHippo
quelle
0

Zunächst ist nichts falsch daran, Ihren Code hübsch aussehen zu lassen, denn schließlich möchten Sie stolz auf Ihre Erstellung sein, und die Präsentation / Formatierung von Code ist ein Teil davon.

Ich würde jedoch vorsichtig sein, wenn Sie Ihren Code nicht zum Wohle Ihrer Kollegen oder zukünftigen Entwickler überformatieren. Schön für dich, vielleicht nicht schön für mich. :)

Tarang Desai
quelle
0

Sie erkennen das Problem (zwanghaftes Verhalten) und das Symptom (obsessive Formatierung).

Was ist mit der Ursache und Heilung?

  • Arbeitest du zu viele stunden
  • Bist du frustriert, gelangweilt, ängstlich?
  • Was ist deine nächste Aufgabe? Ist es etwas, was du nicht machen willst?
  • Wann hattest du zuletzt Urlaub? Beförderung? Anerkennung für eine Leistung?
  • Handelt es sich um ein Burnout-Problem?
  • Bist du auf einem Todesmarsch?

Manchmal sind diese Symptome ein Zeichen dafür, dass es an der Zeit ist, mutige Änderungen vorzunehmen oder weiterzumachen.

Trotz des schlechteren Titels enthält Yourdons Buch viele hilfreiche Vorschläge und enthält für viele Organisationen eine ziemlich genaue Beschreibung.

http://dev.co.ua/docs/Edward%20Yourdon%20-%20Death%20March.pdf

Sie scheinen ziemlich aufschlussreich zu sein, und ich glaube, Sie kennen die Antwort.

Jetzt gib dir die Erlaubnis, danach zu handeln.

DeveloperDon
quelle
-4

Heilige Rinder!
Sie Leute haben noch nie von Einrückung gehört?

Es ist ein Dienstprogramm zum Formatieren von Code, das es seit über 20 Jahren gibt. Es verfügt über eine Vielzahl von Optionen, sodass Ihr Code automatisch formatiert werden kann, wo immer Sie möchten.

ähm - aber es funktioniert nur auf C und einigen, aber nicht allen C ++ ... (wtf? Warum aktualisiert GNU es nicht?)

Jeff Kinz
quelle
2
Vielen Dank für Ihre erste Antwort. Wir sind uns nicht sicher, wer es abgelehnt hat, aber werfen Sie einen kurzen Blick auf die Richtlinien für die Beantwortung von Fragen zu Stack Exchange-Programmierern. Programmers.stackexchange.com/questions/how-to-answer . Ihre Antwort könnte wahrscheinlich nach diesen Kriterien überarbeitet werden, um ein oder zwei Stimmen zu gewinnen.
DeveloperDon