Schreiben Sie tatsächlich 'sauberen Code'? [geschlossen]

54

Ich habe einige Programmierer gesehen, die ihren Code immer wieder modifizierten, um ihn nicht nur "gut funktionieren", sondern auch "gut aussehen" zu lassen.

IMO, 'sauberer Code' ist eigentlich ein Kompliment, das anzeigt, dass Ihr Code elegant, vollkommen verständlich und wartbar ist. Der Unterschied ergibt sich, wenn Sie sich zwischen einem ästhetisch ansprechenden Code und einem stressigen Code entscheiden müssen.

Also, wie viele von Ihnen schreiben tatsächlich 'sauberen Code'? Ist es eine gute Übung? Was sind die anderen Vor- oder Nachteile davon?

ykombinator
quelle
Bei all meinen Versuchen, "sauberen" Code nach allgemein anerkannten Grundsätzen zu schreiben, war es für mich nie so einfach, einen bestimmten Maßstab zu überschreiten, der allein auf solchen Voraussetzungen beruhte. Wesentlich relevanter war die Zuverlässigkeit und die Eignung für den Zweck (der sich ebenso auf die Implementierung wie auf das Design beziehen kann). All die Sauberkeit auf der Welt kann einen Mangel an diesen nicht ausgleichen, und manchmal ist der zuverlässigste Code, den ich weiterhin verwende, nicht der sauberste, während mein sauberster Code nicht immer der zuverlässigste war.
Vor allem aber - über Lesbarkeit, Schönheit, FEST, irgendetwas anderem - fand ich es nützlich, Zuverlässigkeit und "Stabilität" (die Qualität, in meinem Buch unveränderlich zu sein und darüber hinaus das Bedürfnis oder den Wunsch, sich zu verändern, zu priorisieren des Weiteren). Zuverlässige und stabile Dinge haben für mich die Zeit überdauert, und manchmal sind sie in den Büchern vieler Leute überhaupt nicht sauber (einige meiner am häufigsten wiederverwendeten Codes sind C-Codes aus den späten 80ern und frühen 90ern was Dinge wie kleine Hacks betrifft, die kaum noch jemand versteht - funktioniert immer noch so zuverlässig).

Antworten:

52

Ich würde argumentieren, dass viele von uns keinen sauberen Code schreiben . Und im Allgemeinen ist das nicht unser Job . Unsere Aufgabe als Softwareentwickler ist es, ein Produkt zu liefern, das pünktlich funktioniert.

Ich erinnere mich an Joel Spolskys Blogpost: The Duct Tape Programmer .

Er zitiert aus Coders at Work :

Am Ende des Tages versenden Sie das verdammte Ding! Es ist großartig, Ihren Code neu zu schreiben und sauberer zu machen, und bis zum dritten Mal wird er tatsächlich hübsch sein. Aber darum geht es nicht - Sie sind nicht hier, um Code zu schreiben. Sie sind hier, um Produkte zu versenden. - Jamie Zawinsky

Ich werde auch an die Blog-Antwort von Robert Martin erinnert :

Damit. Seien Sie clever. Sei sauber. Sei einfach. Schiff! Halten Sie eine kleine Rolle Klebeband bereit und scheuen Sie sich nicht, es zu verwenden. - Onkel Bob

Wenn der Code, den ein Entwickler schreibt, sauber ist UND funktioniert (ist lieferbar), ist es gut für alle. Aber wenn ein Entwickler versucht, sauberen und lesbaren Code auf Kosten der rechtzeitigen Bereitstellung zu erstellen, ist das schlecht. Lass es funktionieren, benutze Klebeband und versende es. Sie können es später umgestalten und es superschön und effizient machen.

Ja, es ist eine gute Praxis, sauberen Code zu schreiben, aber niemals auf Kosten der Lieferfähigkeit. Der Vorteil der pünktlichen Lieferung eines mit Klebeband versehenen Produkts überwiegt bei weitem die Vorteile von sauberem Code, der nie fertiggestellt und ausgeliefert wurde.

Ein gutes Stück Code, auf das ich gestoßen bin, ist nicht sauber. Einige sind geradezu hässlich. Aber sie wurden alle veröffentlicht und in der Produktion eingesetzt. Einige mögen sagen, dass es unprofessionell ist, unordentlichen Code zu schreiben. Ich stimme dir nicht zu. Die professionelle Sache ist, Code zu liefern, der funktioniert, ob sauber oder chaotisch. Der Entwickler muss sein Bestes geben, unabhängig von der Zeit, die vor der Auslieferung zugeteilt wurde. Dann gehen Sie zurück, um aufzuräumen - das ist professionell. Hoffentlich ist der gelieferte Code kein reines Klebeband und "sauber genug".

schwammig
quelle
45
Solange Ihre technische Verschuldung ( en.wikipedia.org/wiki/Technical_debt ) Sie nicht zum "technischen Bankrott" (Kann keine neuen Funktionen bereitstellen, ein Teil wird durch ein anderes ersetzt, usw.) führt und Sie ein Auge darauf haben Darin stimme ich zu.
Matthieu
3
@HeathLilley Einverstanden. Ich glaube einfach nicht, dass Entwickler, die sagen, dass nur sauberer Code geschrieben werden sollte. Das ist Schwindel. Unordentlicher Code passiert. Die Idee, dass Entwickler von Anfang an nur sauberen und korrekten Code schreiben sollten, ist eine Illusion. Ich unterstütze die Idee, dass wir uns immer wieder neu überlegen und umgestalten, wenn sich unser Verständnis der Domäne verbessert.
Spong
40
Das Problem bei "Versende einfach das verdammte Ding jetzt" ist, dass das Management deine Gründe für eine spätere Umgestaltung nicht kauft, aber wenn du es JETZT unsichtbar machst, wird alles gut.
Job
5
Eine andere Illusion ist zu denken, dass Sie Zeit haben, es später zu reinigen. Das wird nicht passieren. Sie haben andere Dinge zu versenden. Sie sollten keinen chaotischen Code liefern. Übrigens sollten Sie auch an Terminen arbeiten, Sie sind der Techniker, der weiß, wie viel Zeit es dauern wird, sauberen Code zu schreiben. Das bedeutet nicht, dass Sie wahnsinnig viel Zeit damit verbringen, zu putzen und zu basteln. Das bedeutet, dass die Zeit bis zur Umgestaltung, bevor Sie den Code versenden, berücksichtigt werden sollte.
Steve Chamaillard
3
"Sie können es später umgestalten"
Carl Leth
39

Sie müssen sicherstellen, dass Ihr Code gut lesbar, sauber und wartbar ist. Das müssen alle Programmierer tun.

Aber du sprichst over styling(wie dieser Begriff besser als Girl-Code ), der nur dem Ego seines Autors dient.

Ich habe in der Vergangenheit viele Entwickler gesehen, die so stolz auf ihre Kreation waren (wissen Sie, wie in den Toiletten;)), dass sie stundenlang ihren Code bereinigten und polierten. Einige von ihnen waren so akribisch, dass sie dafür sorgten, dass die richtigen Leerzeichen zwischen den Mitgliedern eingehalten wurden.

Es ist zu viel.

Ich finde ein solches Verhalten kontraproduktiv. In einem professionellen Kontext müssen Sie professionell sein . Sie erhalten Ihre Zufriedenheit, indem Sie sauberen, gut lesbaren und wartbaren Code schreiben und mit zufriedenen Benutzern oder Kollegen sprechen.

user2567
quelle
13
Nun, ich poliere, bis der Code für mich klar lesbar ist. Wenn ich zwei Wochen später zurückkomme und herausfinden muss, was ich getan habe, ist es wahrscheinlich nicht klar genug, dass andere es leicht verstehen.
Robert Harvey
14
Eleganter Code ist von Natur aus wartungsfreundlicher und meiner Meinung nach leichter zu lesen.
Craige
6
+1, ich habe in der Vergangenheit einen perfekt gestylten SPAGHETTI CODE gesehen.
Jas
23
Ich stimme dem Gefühl zu, aber ich schreibe meinen Code mit der richtigen Anzahl von Leerzeichen zwischen den Mitgliedern und ärgere mich über Leute, die dies nicht tun. Dies ist eine einfache Sache (die durch automatisierte Tools wie StyleCop noch einfacher wird), und die damit verbundene Konsistenz ist den geringen Aufwand wert.
Robert Harvey
3
@sunpech: Schreibe es sauber und es ist viel einfacher, es sauber zu halten.
David Thornley
24

Ich würde der akzeptierten Antwort auf diese Frage nicht zustimmen.

Ihre Verantwortung ist natürlich das Versenden, aber normalerweise sind Sie auch dafür verantwortlich, etwas zu versenden, das von Ihnen und zukünftigen Entwicklern so kostengünstig wie möglich gewartet werden kann.

Ich habe einige Zeit als armer Wartungsprogrammierer oder Berater vor Ort verbracht, der ein riesiges undokumentiertes System verstehen und debuggen muss, und ich kann Ihnen sagen, dass schlechte Designs und unordentlicher verwirrender Code zu Stunden oder sogar Tagen verschwendeter Anstrengung führen können. Ich kann mir viele Situationen vorstellen, in denen ein zusätzlicher Arbeitsaufwand von N Stunden durch den Erstentwickler zu einer Zeitersparnis von 5N hätte führen können.

Ich weiß, dass diesbezüglich eine Statistik im Umlauf ist, aber meiner Erfahrung nach wird jede Codezeile, die geschrieben wird, während der Erweiterung und Wartung 5-20 Mal gelesen.

Also würde ich sagen, dass Code innerhalb eines Zolls seines Lebens bereinigt werden soll . Es braucht Zeit, aber es ist wahrscheinlich eine Nettokosteneinsparung über die gesamte Laufzeit des Projekts.

Benjamin Wootton
quelle
2
Nein, Sie bereinigen Ihren Code, wenn Zeit und Budget zur Verfügung stehen, UND das Risiko, dies zu tun, ist geringer als das Risiko, dies nicht zu tun. In Produktionsumgebungen bedeutet dies, dass Sie häufig vorhandenen Code nicht polieren, um ihn hübscher zu machen. Dies ist nicht kosteneffizient, birgt jedoch das Risiko, dass neue Fehler auftreten.
Jwenting
Dies hängt auch davon ab, in welcher Ecke der Software-Entwicklung Sie arbeiten. Früher arbeitete ich für eine Digital Marketing-Agentur, die gerne Gebühren an ihre Kunden weiterleitete, wenn die nächste Phase aufgrund von Problemen mit der Codebasis länger dauern sollte. Unser Drang, während der Entwicklung mehr Zeit für die Behebung bestehender Probleme zu haben, wurde zugunsten einer längeren Entwicklungszeit, die mehr Geld für das Unternehmen bedeutet, abgeschafft.
Simon Whitehead
1
Ich stimme dem zu. Sie sollten Code liefern, aber wenn Sie nicht reparieren / aktualisieren / aktualisieren können, war das, was Sie geliefert haben, kein Code, sondern eine Geldlücke. Ich finde, dass Menschen, die gegen diese Idee kämpfen, es gewohnt sind, in schlechten Umgebungen zu arbeiten und sich für ein System einzusetzen, das sie noch nie erlebt haben. Ich habe sowohl sauberen als auch nicht sauberen Code gepflegt und werde Ihnen sagen, dass sauberer Code weitaus billiger und schneller zu pflegen und zu entwickeln ist.
Jdahern
21

Würde irgendjemand von uns ein Auto kaufen, wenn wir wissen, dass es unter der Motorhaube unordentlich und schwierig ist, Fehler zu beheben, zu warten oder zu reparieren, und mehr Ressourcen für den Betrieb benötigt, als es sollte?

Warum sollte es bei einer Software anders sein?

Nur weil die Endbenutzer nicht unter die Haube schauen können, heißt das nicht, dass sie es nie erfahren werden. Früher oder später wird es auftauchen.

Beantwortung der Frage "Schreiben Sie tatsächlich 'sauberen Code'?" -- Oh ja.!

Sifar
quelle
Ich würde dem nicht zustimmen - Software rostet nicht (wie Joel es ausdrückt), im Gegensatz zu den Innenseiten eines Autos. Sie könnten argumentieren, dass beim Upgrade eines Betriebssystems auch die Software aktualisiert werden muss, aber das ist etwas anderes. Auch ich kann schreiben sauberen Code, aber ich glaube nicht , dass es das wichtigste Merkmal meiner Beiträge ist.
K.Steff
18

Wenn mit "sauberer Code" gemeint ist, gebe ich mir alle Mühe, um sicherzustellen, dass der Code so klar wie möglich ist?

Oh Ja.

Je sauberer, klarer der Code, desto einfacher ist die Pflege und Sie sparen auf lange Sicht Zeit. Betrachten Sie sauberen Code nicht als Eitelkeit. Betrachten Sie es als Investition, um in Zukunft Aufwand und Zeit zu sparen.

GrandmasterB
quelle
15

Ehrlich gesagt kommt es darauf an. Ich mag es, wie jeder die Party-Linie darüber anspricht, dass "alles andere als sauberer, gut dokumentierter Code eine reine Farce ist!", Aber ich arbeite in einem Geschäft mit lächerlichen Bereitstellungszyklen und null Versehen: Ich gebe mein Bestes, aber ich schreibe es Mit viel Code ist es extrem schwierig, den sauberen, perfekten Code zu schreiben, von dem alle anderen behaupten, dass sie ihn schreiben.

Ich versuche, Code zu schreiben, der leicht von jemandem gepflegt werden kann, der ungefähr meine Fähigkeiten hat. Ich kommentiere die kniffligen Teile, benenne die Programme, Variablen und klassenfreundlichen Namen, setze sie ein und gehe weiter. Ich habe keine Zeit für etwas anderes.

Manchmal fühle ich mich ein bisschen schuldig, aber nicht sehr. Sie sollten einige der Schrecken sehen, mit denen ich täglich zu tun habe. Jahrzehntelanger benutzerdefinierter Code in undurchsichtigen Sprachen ohne Dokumentation. Einer meiner Mitarbeiter entwickelt sich ausschließlich in Visual Basic 6.0 und stellt überall kryptisch benannte Binärdateien bereit. Die Frau, die ich ersetzte, programmierte ausschließlich in RPG .

Es ist für mich einfach extrem schwierig zu glauben, dass jeder nur sauberen Code generiert , so viel schrecklichen Mist, wie ich in meinen Jahren als Programmierer gesehen habe .

Satanicpuppy
quelle
Einverstanden. Die meisten Leute werden keinen sauberen Code schreiben, um das erste Mal zu versenden / veröffentlichen. Es ist Klebeband erforderlich, um die Arbeit zu erledigen.
Spong
2
Genug mit dem Klebeband! Spolsky ist kein Gott. Er zieht sich zu der Zeit seine Hose an, genau wie wir!
Job
5
Ein Grund dafür, dass Sie sauberen Code schreiben, ist, dass es schneller ist, sauberen Code als unsauberen Code auf einer anderen als der kürzesten Zeitachse zu schreiben (sagen wir ein paar Stunden). Wenn Sie ein paar Sekunden lang über Variablen- und Methodennamen nachdenken, verpassen Sie eine Frist. Dies gilt auch für die wertvolle Zeit, die Sie verlieren, wenn Sie und / oder Ihre Mitarbeiter durch Ihren Code verwirrt werden. Sie machen Code-Sound fast wegwerfbar, als würden Sie ihn schreiben, er wird eine Weile ohne Wartung verwendet und dann in den Ruhestand versetzt. Vielleicht ist in Ihrer besonderen Situation Code verfügbar. Ich habe das in einem Jahrzehnt praktischer Erfahrung noch nie erlebt.
PeterAllenWebb
1
@peter: Und in zwei Jahrzehnten habe ich noch nie einen Ort gesehen, an dem jeder Code sauber war. Ich habe selten einen Ort gesehen, an dem die Hälfte war. Wo arbeitest du? NASA?
Satanicpuppy
2
@Satanicpuppy Ich habe in meiner Zeit viel schmutzigen Code gesehen und ich habe meinen Teil geschrieben, aber fast alles hat meine Zeit oder die von jemand anderem verschwendet. Ich stehe zu der Behauptung, dass sauberer Code auf jeder Zeitskala, die länger als ein paar Stunden dauert, tatsächlich SCHNELLER als schmutziger Code geschrieben werden kann.
PeterAllenWebb
7

Ich glaube, ich mag den Begriff "Mädchencode" nicht, aber sauberer Code = wartbarer Code. Alles andere ist unprofessionell.

In der Regel überlege ich mir den nächsten Entwickler, der sich mein Durcheinander ansehen muss.

Die meiste Zeit bin ich ... einige Monate später ... wenn ich mich nicht mehr daran erinnere, wie es funktioniert ... und ich noch weniger Zeit habe, eine Änderung vorzunehmen.

Heath Lilley
quelle
5

Ich versuche, "sauberen Code" im Sinne von Bob Martin zu schreiben (zB OO-Design). Es ist sehr wertvoll, sauberen Code zu schreiben. Es ist viel leichter zu warten.

Dann lasse ich ReSharper es für mich "hübschen Code" machen (zB Ausrichtung, Zeilenumbrüche usw.). Es hat einen guten Wert, schönen Code zu schreiben. Aber es gibt sinkende Renditen. Einige Prettifikationen machen es aufgrund der einfachen Lesbarkeit ein bisschen wartbarer.

Wenn Sie der Meinung sind, dass Sie große Codeblöcke ordentlich aneinanderreihen müssen, um sie lesbar zu machen, dann ist das Problem Ihr verdammt großer Codeblock! Es ist zu groß. Ich sehe viele Beispiele von Menschen, die sich große Mühe geben, einen sehr schlecht gestalteten Code zu verschönern.

Wenn ich ReSharper nicht hätte, hätte ich immer noch sauberen Code, aber es wäre nicht ganz so hübsch.

Ich denke nicht, dass ich mehr als ~ 5% meiner Programmierzeit für das Verschönern verwenden sollte. Das heißt, je leistungsfähiger mein Redakteur und je kompetenter ich damit bin, desto mehr Prettifikation kann ich tun.

dss539
quelle
4

Es scheint, dass niemand die Frage aufwirft, was im besten Interesse Ihres Unternehmens liegt.

Oft, wenn nicht immer, sind Programmierer nur Mitarbeiter, und obwohl die Entscheidungen des Managements uns frustrieren, verfügen wir häufig nicht über alle Daten, die sie liefern.

Nehmen wir zum Beispiel an, das Unternehmen ist mit einer Klausel beauftragt, dass Sie nicht bezahlt werden, wenn die Software nicht rechtzeitig fertig ist. Ja, sauberer Code ist wichtig, aber wichtiger ist, dass der Code bis zum Zahlungstag funktioniert!

Ein weiteres Beispiel: Das Unternehmen befindet sich in einer schlechten finanziellen Lage und muss etwas Geld sammeln. Ratet mal, wen interessiert Qualität? Sie können es später reparieren, wenn Sie müssen, versenden Sie es einfach!

Ein Argument könnte sein "Warum sollte ich ausverkaufen und beschissenen Code schreiben?". Warum sollte Ihr Unternehmen Ihnen jeden Monat einen schönen Scheck ausstellen? Entscheidungen, mein Freund. Wenn Sie nach Idealismus streben, versuchen Sie es mit der Free Software Foundation . Ich höre, dass sie ein paar ziemlich coole Sachen machen (ich meine das hier und respektiere FSF und OSS).

Auf der anderen Seite ist es besser, wenn Sie an einem Projekt arbeiten, bei dem eine explosive Zunahme der Nutzung zu erwarten ist (obwohl solche Projektionen so gut wie nie genau sind), ein solides Fundament mit der besten erforderlichen Codequalität zu legen, da dies mit ziemlicher Sicherheit zu Wartungsarbeiten führt seien Sie die größeren Kosten für das Projekt.

Programmierer lieben 'sauberen' Code, was auch immer das bedeutet. Wir können uns nicht einmal darauf einigen, was sauber ist, aber wir lieben es. Manchmal ist es jedoch genauso unwichtig wie die Benutzerfreundlichkeit und Korrektheit. Diese scheinen zwar synonym zu sein, sind es aber nicht. Wenn Sie in 4 Stunden Code gesehen haben, der von einem echten Perl-Hacker in der Absicht geschrieben wurde, zweimal verwendet und weggeworfen zu werden, werden Sie feststellen, dass er nicht sauber ist, aber funktioniert.

Abgesehen vom Ego sollten wir es manchmal einfach zum Laufen bringen. Beachten Sie, dass ich es nicht als Gewohnheit empfehle, schlechten Code zu schreiben. Ich weise nur darauf hin, dass es notwendig sein könnte. Perfektion braucht Zeit, die Ihr Unternehmen möglicherweise nicht hat. Wenn es Ihrem Arbeitgeber nichts ausmacht, erstellen Sie Software, aber wenn Sie müssen, schreiben Sie einfach den Arbeitscode und achten Sie nicht auf die "Sauberkeit". Es ist einfach keine "Einheitsgröße" -Antwort - Sie sollten Prioritäten setzen.

K.Steff
quelle
3

Ich bin nicht sicher, ob "gut aussehen" und "elegant, perfekt verständlich und wartbar" gleichwertig sind.

Ich versuche Code zu schreiben, der "elegant, perfekt verständlich und wartbar" ist. Ich überarbeite meinen eigenen Code, um diesen Kriterien besser zu entsprechen.

Ich sehe keine Nachteile, außer den daraus resultierenden Kosten in der Zeit.

Damit Code "gut aussieht", gibt es viele automatisierte Tools, die alles richtig einrücken und platzieren, wie Sie es wünschen.

back2dos
quelle
2
Dadurch ärgere ich mich noch mehr, wenn ich schlecht formatierten Code sehe. Die Person, die es geschrieben hat, hätte einfach eines dieser Tools verwenden können, um es für sie zu tun. Es tritt auch am häufigsten auf, wenn Tabulatoren und Leerzeichen gemischt werden, um ein unheilvolles Durcheinander zu erzeugen.
Sternberg
3

Zu viel von irgendetwas ist niemals gut.

Bei "unsauberem" Code ist jedoch zu beachten, dass dies leicht zu " kaputten Fenstern " führen kann. Wenn der Code sehr schlecht formatiert ist, sind wahrscheinlich viele Neueinsteiger weniger geneigt, gute Arbeit mit Wartung und Weiterentwicklung zu leisten, was zu einer Abwärtsspirale führt, die sich möglicherweise auf den Betriebszustand der Software auswirkt.

Daher ist es für mehr als nur Ihre Kollegen von Vorteil, ein bestimmtes Maß an Sauberkeit im Code beizubehalten. Verbringen Sie nicht zu viel Zeit damit (~ 5% wurden erwähnt). Erfahren Sie, wie Sie mit den Werkzeugen Ihres Handwerks manuelle Aufgaben automatisieren (in diesem Fall die Code-Formatierung). Übernehmen Sie Verantwortung für das, was Sie tun, und tun Sie immer das, was für Ihr Unternehmen / Ihre Kunden / Benutzer am vorteilhaftesten ist.

Per Noalt
quelle
3

Dies ist ein Zitat aus Clean Code von Bob Martin:

Um diesen Punkt nach Hause zu fahren, was wäre, wenn Sie Arzt wären und einen Patienten hätten, der verlangt, dass Sie das alberne Händewaschen zur Vorbereitung der Operation einstellen, weil es zu lange dauert? Der Patient ist eindeutig der Chef; und dennoch sollte der Arzt die Einhaltung absolut verweigern. Warum? Denn der Arzt weiß mehr als der Patient über die Risiken von Krankheiten und Infektionen Bescheid. Es wäre unprofessionell (egal, was für ein Verbrecher), wenn der Arzt sich an den Patienten hält.

So ist es auch für Programmierer unprofessionell, sich dem Willen von Managern zu beugen, die die Risiken von Unordnung nicht verstehen.

Tulains Córdova
quelle
2

Ich denke, "sauberer Code" sollte so sauber oder sauber sein, wie Sie es in Ihren Physik- / Ingenieur- / Mathematikprüfungen getan haben. Wenn es zu chaotisch ist, wird der Grader Ihre Arbeit nicht verstehen und sie wahrscheinlich als falsch markieren, auch wenn sie richtig ist.

Chiurox
quelle
2

Ich mag, dass Code lesbar ist, aber das Wichtigste ist die Konsistenz. Für mich bedeutet dies Konsistenz mit Benennungskonventionen und Abständen zwischen Funktionen, Klammern in derselben Zeile oder in der nächsten Zeile der if-Anweisung usw.

Natürlich gibt es Zeiten, in denen jemand etwas mit einem konsistenten Codestil programmiert, und das macht mich immer noch wahnsinnig. Besonders Code, der nicht "atmet". Zum Beispiel:

void function1(){
    //whatever code
}
int fooBar(){
    //whatever else
}
Foo* someOtherFooBar(int value){
    if(value){
        //do something
    }
    return ...;
}

Nun ... Mit Objective-C-Methoden und mit vielen, vielen verschachtelten if-Anweisungen und Zeilen, die viel länger als 80 Zeichen sind, sieht es noch schlimmer aus. Aber es nervt mich trotzdem :)

Eifer
quelle
2

Ich bin sehr bemüht, Code zu bereinigen. Ich denke, es hilft sehr, die Fehler hervorzuheben.

Ich stimme dem Konzept "Ship the fucking thing now" nicht zu, da sauberer Code eine Investition in die Zukunft ist. Außerdem werden zu viele Programme mit zu vielen Fehlern ausgeliefert. Meiner Meinung nach ist es besser, einen Fehler zu beheben, als eine neue Funktion zu implementieren.

Auch wenn Sie sich Schätzungen der Programmiererproduktivität ansehen , denke ich nicht, dass ich sehr schlecht abschneide. Sauberen Code zu schreiben ist eine Gewohnheit und je mehr Erfahrung ein Programmierer hat, desto effizienter wird er. Wenn man es nie versucht, wird man offensichtlich nie Erfahrung damit bekommen.

Ein weiterer zu berücksichtigender Punkt ist, dass die meiste Entwicklerzeit für das Lesen von Code aufgewendet wird, sodass lesbarer Code die Zeit, die zum Lesen aufgewendet wird, erheblich verkürzt. Das Verstehen von undokumentierten Algorithmen kann zum Beispiel kostspielig sein und neue Fehler verursachen.

Eine Sache, die ich auf jeden Fall vermisse und die ich gerne eines Tages hätte, ist ein automatischer Code-Formatierer, den ich an meinen Stil anpassen könnte. Das würde mir viel Zeit sparen, vor allem, wenn ich den Code anderer Leute lese.

Sauberes Codieren hat eine Verbindung zum Perfektionismus, der möglicherweise nie zustande kommt, aber ich denke, das ist hauptsächlich ein Problem, wenn Sie anfangen, weil Sie später investieren und Ihre eigenen eleganten Codeteile wiederverwenden, kombiniert mit Ihrer Erfahrung Wenn Sie älter werden, werden Sie sehr produktiv sein und weniger von Fehlern heimgesucht als die chaotischen Programmierer.

Dies ist ein Codeteil, der meinen Codierungsstil demonstriert.

user20416
quelle
1

Vermeiden Sie einfach "Vanity Code". Es gibt viele Entwickler, die Dinge nur aus Eitelkeit (oder aufgrund einer Zwangsstörung) und sonst nichts tun. Mein Höschen wird wirklich mit diesen Leuten verdreht.

ElGringoGrande
quelle
Wie Flügel oder (schlimmer) Boxkommentare, sagen Sie?
David Thornley
1

Ich schreibe Code, der versucht, das gegebene Problem auf die effizienteste und theoretisch "eleganteste" Weise zu lösen. Nur in diesem Sinne ist es sauber. Wenn es 'hübsch' ist, wenn ich fertig bin, soll es so sein.

Was ich in meinen begrenzten Erfahrungen festgestellt habe, ist, dass die Hässlichkeit, wenn sich Leute über 'sauberen Code' beschweren, in der Regel auf eine schreckliche Lösung und nicht auf Kodierungskonventionen zurückzuführen ist.

Kurtis
quelle
1

Ich würde sagen, ich bemühe mich, saubereren Code zu schreiben, aber das kann sich aus Zeitgründen ändern oder wenn ich an etwas Schwierigem arbeite. Es neigt dazu, chaotisch zu werden, wenn man sich darauf konzentriert, es zum Laufen zu bringen. Dann gehe ich zurück und räume auf, während ich es überprüfe. Wenn Sie zum Code zurückkehren und zu viel Zeit damit verbringen müssen, Ihr Gedächtnis aufzufrischen, haben Sie es nicht genug kommentiert.

Sauberer Code ist gut, aber wie alles andere muss er sauber genug sein. Das Einrücken von 5 Codezeilen mit 4 Leerzeichen und einer Zeile mit 5 Leerzeichen erhöht die Leseschwierigkeiten nicht.

JeffO
quelle
1

Ich denke, es hängt davon ab, was Sie tun. Wenn ich eine Proof-of-Concept-Anwendung schreibe, codiere ich meinen Arsch im Grunde genommen ab und blicke nicht zurück. Wenn ich an einer Anwendung arbeite, an der ich eine Weile arbeiten werde, stelle ich sicher, dass ich sie gut genug codiere und in einem Monat verständlich mache.

Ich denke, dass das Styling Ihres Codes ein bisschen zweifelhaft ist. Wie oben bereits erwähnt, besteht Ihre Aufgabe darin, einen Produktcode zu erstellen, der nicht formatiert ist. Ich würde jedoch sagen, dass man sich zumindest an einen definierten Stil für das Kommentieren und Codieren von Dingen halten sollte. Ich würde es hassen, die Hälfte der Variablen mit Kamel und die andere Hälfte mit Ungarisch zu sehen.

Aber es kommt auch darauf an, was Sie mit "sauberem Code" meinen.

user7007
quelle
0

Ich gebe zu, das zu tun; und der Vorteil wird nicht jedes Mal verärgert, wenn ich es sehe. Ich denke, es ist auch einfacher zu lesen, und daher werden Fehler offensichtlicher. aber der wahre Grund ist, dass ich hässlichen Code nicht ausstehen kann.

user281377
quelle
0

Das Umgestalten des Codes, um ihn elegant zu gestalten, erleichtert das Lesen und die Wartung. Selbst kleinere Dinge wie das Ausrichten Ihrer Variablenzuweisungen:

int foo    = 1;
int bar    = 2;
int foobar = 3;

ist leichter zu lesen als

int foo = 1;
int bar = 2;
int foobar = 3;

Das heißt, es ist einfacher zu überfliegen, wenn Sie später debuggen.

In PHP sind außerdem beliebig viele zufällige Codeblöcke zulässig. Ich benutze diese, um logische Aufgaben zu gruppieren:

// do x
{
    // ...
}

// do y
{
    // ...
}

Dies fügt dem relevanten Code eine klare Definition hinzu.

Bearbeiten : Als zusätzlichen Bonus können Sie einem dieser logischen Codeblöcke ganz einfach einen voranstellen, if (false)wenn Sie ihn vorübergehend überspringen möchten.

Craige
quelle
11
Ich denke, sie haben schon etwas erfunden, das das macht - es heißt eine Funktion. Jedes Mal, wenn Sie einen dieser Blöcke erstellen, sollten Sie stattdessen eine Funktion erstellen. Wenn Sie es von dort aus nicht ausführen möchten, kommentieren Sie den Funktionsaufruf aus (anstatt einen Kommentar mit Rückhand
einzutragen
1
@ stargazer712: Ich hasse PHP-Funktionen, weil es keine definierten Namespaces gibt. Wenn jemand anderen Code liest, hat er zwangsläufig oben ein "Include", das selbst 5 andere Dinge enthält, von denen jedes 4 weitere enthält, und dann muss ich eine Suche auf der gesamten Codebasis durchführen, um die Funktionsdefinition zu finden. Sehr frustrierend.
Satanicpuppy
Häufig ist dies Code, der keine Funktionsdeklaration rechtfertigt. z.B. Keine Möglichkeit zur Wiederverwendung, Berechnung / Einstellung verwandter Variablen mit lokalem Gültigkeitsbereich usw.
Craige
Andererseits ist Code ohne Wiederverwendungsmöglichkeit selten. Wenn Sie feststellen, dass Sie eine Menge Code schreiben, der nicht wiederverwendet werden kann, besteht eine gute Möglichkeit, dass er stark verbessert werden könnte.
Riwalk
-2

Ich schreibe einfach meinen Code und folge dabei den Unternehmensstandards. Wenn ich es "hübsch" haben will, kann ich es durch einen Code-Verschönerer laufen lassen.

Muad'Dib
quelle
2
Mit der Ausnahme, was im Allgemeinen passiert, läuft jemand anderes durch eine Kosmetikerin, um das aufzuräumen, was Sie beim Reinigen nicht gesehen haben.
Riwalk
@ Stargazer712 das ist genau der Grund, warum ich mich nicht mehr darum
Muad'Dib
@ Maud'Dib, das Problem ist dann, dass das Ergebnis nur so gut ist wie der Schönmacher. Während sich das horizontale Leerzeichen ausschließlich mit dem Bereich befasst (und daher sehr gut bereinigt), handelt es sich bei vertikalen Leerzeichen im Allgemeinen um Absichten (Gruppieren von verwandten Elementen) und wird sehr schlecht bereinigt. Fazit - erbarme dich der anderen Entwickler.
Riwalk
@ Stargazer712 Problem ist, bis auf "Firmenstandards" ist alles andere gänzlich Geschmackssache, was subjektiv ist. Zum Beispiel mag ich es, Räume an Stellen zu platzieren, an denen mein Kollege sie positiv hasst. Ich mache es nett zu mir, und das ist so weit wie ich gehe.
Muad'Dib,
1
Seien Sie vorsichtig mit "Verschönerern", da sie das Zusammenführen von Commits erheblich beeinträchtigen können (ich habe Erfahrung aus erster Hand :)).
Juha Untinen