Wie gehe ich mit einem Teammitglied um, das keine Kommentare im Code machen möchte?


183

Eines meiner Teammitglieder vermeidet konsequent Kommentare in seinem Code.

Sein Code ist nicht selbstdokumentierend, und andere Programmierer haben Schwierigkeiten, seinen Code zu verstehen.

Ich habe ihn mehrmals gebeten, seinen Code zu kommentieren, aber er gibt nur Ausreden oder behauptet, dass er es später tun wird. Sein Anliegen ist, dass das Hinzufügen von Kommentaren zu viel Zeit in Anspruch nimmt und die Projekte verzögert.

Welches Argument kann ich ihm vorlegen, um ihn davon zu überzeugen, seinen Code ordnungsgemäß zu dokumentieren?

In diesem Sinne bin ich falsch, mich auf die Codekommentare zu konzentrieren, oder deutet dies auf ein größeres Problem hin, das angegangen werden sollte?


109
Das Kommentieren um der Kommentare willen verbessert den Code nicht. Wenn der Code ohne Kommentare verständlich ist (einschließlich des Grundes), ist dies in Ordnung, andernfalls kommentieren.
Martin York

63
Oh ja, und wenn sich die Komplexität eines Teils des Codes verdreifacht, um eine Racebedingung oder einen Deadlock zu lösen, kommentieren Sie das nicht! Lassen Sie die Leute das Rätsel lösen, warum der Code so sein muss, wie er ist, und warum er auf mysteriöse Weise bricht, wenn sie experimentelle Änderungen vornehmen. Jeder sollte ein Schachgroßmeister der Nebenläufigkeit sein ...
Kaz

12
@ Kaz Sarcasm (ich hoffe) lässt sich nicht gut in Text übersetzen.
Deworde

10
@deworde & artjom - ja, das ist Sarkasmus. nein, es kommt nicht so sauber rüber wie es könnte, aber es ist eindeutig Sarkasmus.

17
Folgende Dale Carnegie Prinzip sollten Sie versuchen , zu verstehen , warum er will nicht erwähnt comment..you , dass er will nicht verzögern die project..so Sie zu ihm sagen kann, wenn er nicht anderen äußert sich nicht wäre in der Lage, den Code zu verstehen und das würde das Projekt weiter verzögern .. das sollte auf jeden Fall helfen ..
Anirudha

Antworten:


431

Kommentare allein sorgen nicht für besseren Code, und wenn Sie nur auf "mehr Kommentare" klicken, erhalten Sie wahrscheinlich nur /* increment i by 1 */Stilkommentare.

Fragen Sie sich also, warum Sie diese Kommentare wünschen. "Es ist die beste Vorgehensweise" gilt nur dann als Argument, wenn Sie verstehen, warum.

Der auffälligste Grund für die Verwendung von Kommentaren ist, dass der Code einfacher zu verstehen ist. Wenn sich die Leute über das Fehlen von Kommentaren beschweren, sind sie entweder ahnungslose Papageien oder es fällt ihnen schwer, den Code zu verstehen, mit dem sie arbeiten.

Beschweren Sie sich also nicht über fehlende Kommentare: Beschweren Sie sich über unlesbaren Code. Oder noch besser, beschweren Sie sich nicht, sondern stellen Sie immer wieder Fragen zum Code. Wenn Sie etwas nicht verstehen, fragen Sie die Person, die es geschrieben hat. Das solltest du sowieso tun; Bei unlesbarem Code stellen Sie einfach weitere Fragen. Wenn Sie später noch einmal auf einen Teil des Codes zurückkommen und sich nicht sicher sind, was er bewirkt, stellen Sie die gleiche Frage erneut.

Wenn Kommentare Abhilfe schaffen und Ihr Kollege ein funktionierendes Gehirn hat, wird er / sie irgendwann feststellen, dass das Kommentieren des Codes viel einfacher ist, als wenn Sie ständig dumme Fragen stellen. Und wenn Sie keine Fragen haben, ist dieser Code möglicherweise bereits perfekt lesbar, und Sie sind schuld - schließlich braucht nicht jeder Code Kommentare.

Vermeiden Sie es, sich im Bereich der menschlichen Fähigkeiten herablassend oder beschuldigend zu verhalten. Seien Sie ernst und ehrlich in Bezug auf Ihre Fragen.


269
+1 für "Beschwere dich nicht über fehlende Kommentare: Beschwere dich über unlesbaren Code."
Md Mahbubur Rahman

4
Was ist, wenn die Antwort auf eine Frage zum Code so lautet wie "Was haben Sie getan, um das zu verstehen?"
Saul

40
+1: Das Drücken auf lesbare Funktionsnamen kann zusätzliche Vorteile haben ... Bei Code Review: "Kann nicht verstehen, was xg_jkhsfkasq tut". "Oh, es spült den primären Futterpuffer. Kann ich ihn jetzt freigeben?" "Sicher, aber ich zögere es zu genehmigen, bis Sie die Funktion flush_primary_buffer umbenannt haben." Ich werde das System zum Stillstand bringen! Würde es Ihnen etwas ausmachen, diese Funktion umzubenennen, während Sie diese Logik ändern? "
Deworde

18
Ich würde mir Sorgen machen, den Eindruck zu erwecken, dass ich keinen Code lesen kann. Ein nicht-technischer Manager merkt möglicherweise, dass ich ständig 'Bob' um Hilfe bitte, weil Bobs Code für mich zu fortgeschritten ist. Das würde bedeuten, dass Bob ein fortgeschrittener Entwickler ist und ich nicht bereit bin, auf seinem Niveau zu arbeiten.
Rob P.

5
@Rob P. Ich sehe die Angst, aber wenn Sie den Code nicht lesen können und erwartet wird, dass Sie den Code beibehalten, ist der Code nicht gut geschrieben oder Sie wissen nicht genug. Wenn Sie nicht genug wissen, müssen Sie fragen. Wenn Sie gefragt werden, ob der Code einfach schwer zu lesen ist, drücken Sie, um ihn zu reparieren. Der Trick wäre, wenn Sie den Weg des Social Engineering beschreiten, es zu verwechseln, ob Bob zu Ihrem Schreibtisch oder zu seinem geht, und sehr aktiv auf Dinge hinzuweisen. Schließlich kann ein Manager ohne
technische Kenntnisse

114

Ich habe viele Entwickler getroffen, die Schwierigkeiten hatten, selbstdokumentierenden Code oder hilfreiche Kommentare zu schreiben. Diesen Menschen fehlt oft genug Selbstdisziplin oder Erfahrung, um es richtig zu machen.

Was nie funktioniert, ist "ihnen zu sagen, dass sie mehr Kommentare hinzufügen sollen". Dies erhöht weder ihre Selbstdisziplin noch ihre Erfahrung. IMHO ist das Einzige, was funktionieren könnte, häufige Code-Reviews und Refactoring-Sitzungen durchzuführen. Wenn ein Entwickler eine Aufgabe abgeschlossen hat, lassen Sie ihn Teile des Codes erklären, die Sie nicht verstehen. Überarbeiten oder dokumentieren Sie den Code sofort so, dass Sie beide 6 Monate später verstehen.

Tun Sie dies über einen Zeitraum von einigen Monaten, mindestens zweimal pro Woche. Wenn Sie Glück haben, lernen die anderen Entwickler durch diese Sitzungen, so dass Sie die Überprüfungshäufigkeit reduzieren können.


5
+1 Dies ist die einzige Möglichkeit, Änderungen an einem Kollegen, den ich gefunden habe, umzusetzen, sich tatsächlich an ihn zu setzen und ihn zu begutachten / umzugestalten. Wenn Sie nicht in der Lage sind, eine Codeüberprüfung abzulehnen, kann dies schwierig sein. Manchmal, wenn Sie auf mittlerem Niveau sind, müssen Sie nur Probleme mit Senioren ansprechen, und wenn sie nicht zuhören, reiben Sie Ihre Nase heraus, bis Sie älter sind und ein Veto gegen solchen Müll
Jimmy Hoffa

1
Code Reviews & Pair Programming sind der beste Weg, um den allgemeinen Standard von Entwicklern in einem Team zu verbessern. Es geht darum, Kenntnisse und Fähigkeiten innerhalb des Teams zu teilen. Ohne sie bringen Sie Entwickler dazu, auf die harte Tour zu lernen und davon auszugehen, dass sie das College perfekt abgeschlossen haben. Das allgemeine Fehlen dieser Praxis in der Branche ist wahrscheinlich der Grund, warum es so viele Entwickler mit mehr als 10 Jahren Erfahrung gibt, die keinen lesbaren, gut organisierten Code schreiben können.
Martin Brown

27

Ich bin überrascht, dass noch niemand Code-Reviews erwähnt hat. Machen Sie Code-Reviews! Wenn er schlecht eingecheckt hat, sag nicht einfach "Kommentar hinzufügen". Stellen Sie ständig Fragen und lassen Sie sich von ihm erklären, was sein Code tut und warum. Mache Notizen. Geben Sie ihm am Ende der Codeüberprüfung eine Kopie der Notizen und bitten Sie ihn, Ihre Fragen ziemlich offensichtlich zu machen. Entweder durch mehr Kommentare oder einfach durch Überarbeitung seines Codes, um die Qualität zu verbessern (vorzugsweise letzterer, wenn möglich).


2
+1 - Wenn Sie eine Frage zu einem Teil des Codes stellen müssen, muss dieser Teil entweder kommentiert oder überarbeitet werden, damit die Frage in Zukunft nicht mehr von einer anderen Person gestellt werden muss.
Dunk

+1 Auch überraschte Code- / Peer-Reviews sind so knapp bei den Antworten. Das Implementieren von Code-Reviews auf Team-Ebene (um nicht auf eine Einzelperson einzugehen) könnte helfen, das Problem zu lösen (und vielleicht auch auf andere, von denen Sie nicht einmal wissen, dass Sie es haben :). Im Extremfall könnten Sie eine No-Solo-Push-Richtlinie implementieren, nach der Sie nur dann Push-Vorgänge durchführen dürfen, wenn Ihre Änderungen von einem anderen Teammitglied überprüft wurden.
Chris Lee

@ChrisLee in meinen Richtlinien zur Überprüfung von Unternehmenscodes wird technisch nicht durchgesetzt. Es gibt jedoch eine Richtlinie, nach der ein Artikel, unabhängig davon, wer die Entwicklungsarbeit geleistet hat, einer Codeüberprüfung unterzogen werden muss, bevor er als Bereit zum Test markiert werden kann. Es ist ziemlich interessant, eine
Codeüberprüfung durchführen

18

Dies hängt vom Code ab, den Ihr Teamworker erstellt. Wenn Sie das Clean Code- Buch von Onkel Bob lesen, werden Sie feststellen, dass er es tatsächlich vorzieht, dem Code keine Kommentare hinzuzufügen. Wenn der Code selbst so lesbar ist, wie er sein sollte, sind kaum Kommentare erforderlich.

Wenn dies nicht der Fall ist oder Sie aufgrund einer nicht verhandelbaren Richtlinie Kommentare benötigen, wird die Hauptfrage lauten, ob nur Sie Kommentare von ihm / ihr schreiben lassen möchten oder ob es sich um das gesamte Team oder das Team / Projekt handelt Führer. Wenn es nur Sie sind, sollten Sie mit Ihren anderen Kollegen sprechen, um herauszufinden, warum es überhaupt keine so große Sache sein kann.

Wenn dem Projektleiter die Kommentare fehlen, können Sie diese auch zur Vollständigkeit anfordern, dh wenn der eingereichte Code keine Kommentare enthält, ist die Arbeit noch nicht abgeschlossen. Er darf keine anderen Arbeiten mehr ausführen, bis seine aktuelle Arbeit beendet ist und dafür Kommentare erforderlich sind. Bedenken Sie jedoch, dass diese Art des Erzwingens höchstwahrscheinlich zu schrecklichen Kommentaren führen wird (erwarten Sie eine Menge beschissener Wiederholungen von Code-Kommentaren).

Meiner bescheidenen Meinung nach ist es nur möglich, die tatsächlichen Gewinne zu besprechen, die Sie und alle anderen aus Kommentaren ziehen. Wenn er / sie es nicht durch bloße Diskussion versteht, gibt es auch immer den schwierigen Weg: Anstatt sie neuen Code schreiben zu lassen, müssen sie mit vorhandenem Code arbeiten. Wenn möglich, sollten Sie zwei verschiedene Arbeitsbereiche finden - einen mit nützlichen Kommentaren und einen ohne Kommentare. Das Lesen des nicht lesbaren, nicht kommentierten Codes einer anderen Person ist ein Augenöffner für Ihre eigene Arbeit.

Wir waren alle einmal dort und waren wütend auf den ursprünglichen Autor einer Quelle, die so schlampig gearbeitet hat. Es ist die zusätzliche Überlegung, dass jeder von uns auch so ein Autor ist, dass Sie erkennen, dass Sie sich um die Lesbarkeit kümmern sollten. Vergessen Sie daher nicht, die Ergebnisse anschließend mit Ihrem Kollegen zu besprechen, um diese Überlegung zu fördern.


+1 für die Diskussion der tatsächlichen Gewinne aus Kommentaren. Kommentare sollen den Quellcode aufwerten.
Sparky

1
Betreff: "Diese Art des Erzwingens wird höchstwahrscheinlich zu schrecklichen Kommentaren führen". Wenn Sie beim Codieren nicht kommentieren, führt das Hinterfüllen von Kommentaren nach dem Codieren fast immer zu schrecklichen Kommentaren, unabhängig davon, ob Sie an sie glauben oder nicht. Wenn Sie codieren, ist dies die Zeit, in der Sie genau wissen, WARUM Sie etwas auf eine bestimmte Weise tun. Das ist die Zeit, andere wissen zu lassen. Wenn Sie nach dem Schreiben des Codes einen Kommentar abgeben, können Sie sich wahrscheinlich nicht einmal mehr daran erinnern, was Sie gedacht haben, als Sie den Code geschrieben haben. Sie neigen daher dazu, einen unbrauchbaren Kommentar nur zum Zwecke des Kommentierens einzutragen.
Dunk

3
hatte immer ein Problem mit dem Ansatz dieses Buches. Kommentare können sehr nützlich sein, um einen Geschäftsprozess / eine Geschäftslogik (oder warum) zu erklären, die kein sauberer Code enthalten kann.
Bharal

Während Kommentare im Code nicht erforderlich wären, sollte mindestens die Methodenbeschreibung vorhanden sein, z. B. Javadoc
Danubian Sailor

2
Clean Code ist ein anständiges Buch, aber es sollte nicht als Evangelium behandelt werden. Sie müssen den gesunden Menschenverstand anwenden und selbst entscheiden, was funktioniert. Ich bin mit dem Rat zu Kommentaren nicht einverstanden, da Programmiersprachen darauf ausgerichtet sind, das Wie eines Problems mit geringer Rücksicht auf das Warum auszudrücken. Ich habe einen Code für Google Shopping geschrieben, der einen Ländercode an die Produkt-SKU anfügt. Es ist offensichtlich, was der Code tut, aber wenn Sie nicht wissen, dass Sie denselben Produktcode auch in verschiedenen Märkten nur einmal verwenden können, würden Sie nicht wissen, warum ich das getan habe. Der Kommentar, den ich hinzugefügt habe, verdeutlicht dies.
GordonM

10

Wenn Sie einen Mitarbeiter haben, der Anweisungen nicht befolgen kann, tadeln Sie ihn und stellen Sie sicher, dass dies nicht zu einem beruflichen Aufstieg beiträgt. Die Konsistenz des Codierungsstils ist für ein Team von entscheidender Bedeutung. Wenn alle anderen Kommentare schreiben und dies nicht der Fall ist, wird der Codierungsstil beeinträchtigt.

Das heißt, Sie können ihm wahrscheinlich helfen. Wenn jemand dagegen protestiert, dass das Kommentieren zu lange dauert, gibt es meiner Erfahrung nach eine psychologische Barriere wie ...

  1. Er ist sich seiner Code / Design-Entscheidungen bewusst und möchte sie nicht in Prosa auslegen. (Code-Überprüfungen können hilfreich sein, um das Selbstvertrauen einer Person zu stärken und sie niederzureißen.)
  2. Er arbeitet sehr linear und denkt nicht viel nach. Das Kommentieren ist schmerzhaft, weil es ihn zwingt, den unmittelbaren Code, den er gerade schreiben wollte, aus seinem Arbeitsspeicher zu entfernen, um seine Absicht auf eine andere Art und Weise zu verfassen. (Wenn dies zutrifft, wird das Kommentieren für seine Codequalität sehr wichtig.)
  3. Historisch gesehen verstehen die Leute seine Kommentare nicht.

Für einen Programmierer ist es wichtig zu erkennen, dass Kommentare wie Tests sind: Sie sind nicht nur für die zukünftige Verwendung bestimmt - sie sind für den Programmierer selbst bestimmt. Sie zwingen ihn, anders über seine Herangehensweise zu denken.

Nichts davon ist ein Ersatz für CI, Tests oder Codeüberprüfungen. Es ist nur einer von vielen kritischen Teilen der Codierung, die selbst keinen Code schreiben.


3
Ich glaube nicht, dass Bedrohungen unbedingt wirksam sein müssen, sie können als Mobbing empfunden werden (auch wenn dies nicht beabsichtigt war), und Programmierer neigen in der Regel dazu, sich über Edikte von höheren Ebenen zu ärgern, und in diesem Fall kann er es auch tun graben seine Fersen in noch mehr. Es kann als letzter Ausweg kommen, aber nur als letzter Ausweg.
GordonM

@GordonM Halten Sie es für besser , einem Mitarbeiter nicht mitzuteilen, wann sein Verhalten unangemessen ist und welche Konsequenzen ein anhaltendes unangemessenes Verhalten hat?
Kojiro

Es ist offensichtlich keine gute Idee, überhaupt nichts zu sagen, aber Menschen zu bedrohen, wird nur ein Klima der Angst fördern, insbesondere über eine relativ kleine Sache wie den Kommentarstil. Wenn Sie ihm vernünftigerweise erklären, warum das Team das Kommentieren für wichtig hält, ist das in Ordnung. Aber ich weiß, wenn mich jemand wegen etwas relativ Kleinem mit dem Sack bedroht, würde ich eher anfangen, stattdessen nach einem anderen Job zu suchen.
GordonM

@GordonM Ich mache tatsächlich eine Ausnahme von der Annahme, dass das, was ich sagte, bedrohlich war, aber trotzdem habe ich es behoben.
Kojiro

8

Holen Sie sich Code-Überprüfungssoftware und verwenden Sie sie gut.

Wir benutzen Kiln und wir lieben es. Wir haben die Richtlinie, dass jeder Änderungssatz überprüft werden muss (obwohl wir Entwicklern erlauben, Überprüfungen von Tags und Zusammenführungen ohne Konflikte selbst durchzuführen / zu genehmigen (obwohl die meisten von uns rebaseif verwenden); auf diese Weise können wir schnell Änderungssätze ohne Überprüfungen erkennen).

Code, der nicht klar ist, ist ein Grund dafür, dass eine Codeüberprüfung abgelehnt wird. Es spielt keine Rolle, ob es sich bei der Korrektur um Kommentare oder klareren Code handelt, der Prüfer muss sie jedoch verstehen können. Einige Entwickler bevorzugen den Code neu zu schreiben, aber andere (ich eingeschlossen) findet es oft leichte Absicht in den Kommentaren zum Ausdruck bringt (Code kann leicht zeigen , was es tut, aber es ist schwieriger zu zeigen , was es sollte tun).

Wenn es jemals Fragen zur Klarheit des Codes gibt, gewinnt der Prüfer immer. Natürlich versteht der Autor es, weil sie es geschrieben haben. Es muss einer anderen Person klar sein.

Durch die Verwendung von Software wie Kiln wird kein Änderungssatz übersehen. Jeder in meinem Entwicklerteam zieht es so vor. Die Codeüberprüfungssoftware hat einen enormen Einfluss auf die Codequalität und die Anwendungsqualität :-)

Es ist leicht für Entwickler, sich mit abgelehnten Bewertungen zu wehren, wenn sie zum ersten Mal Software einführen, aber meiner Erfahrung nach dauert es nicht lange, bis sie erkennen, dass die Dinge auf diese Weise besser sind und es annehmen :-)

Bearbeiten: Auch erwähnenswert, wir versuchen, nicht zu haben, dass Entwickler kryptischen Code verbal oder in Kommentaren in der Rezension erklären. Wenn etwas nicht klar ist, können Sie es am besten im Code erklären (in Kommentaren oder durch Refactoring). Fügen Sie dann die neuen Änderungssätze derselben Überprüfung hinzu.


4

Interessanterweise wird die Lesbarkeit in Bezug auf die natürliche Sprache an der Geschwindigkeit des Lesens und Verstehens gemessen. Ich denke, eine einfache Regel kann in der Tat übernommen werden. Wenn ein bestimmter Codekommentar diese Eigenschaft nicht verbessert, kann er vermieden werden .

Warum Kommentare?

Obwohl der Codekommentar eine Form der eingebetteten Dokumentation ist, gibt es in High-End-Programmiersprachen mehrere Möglichkeiten, um überflüssige "überdokumentierte" Programmierung (von sinnvollem Code) durch Verwendung von Elementen der Sprache selbst zu vermeiden. Es ist auch eine schlechte Idee, Code in Listen aus dem Programmierlehrbuch umzuwandeln, in denen einzelne Aussagen buchstäblich auf fast tautologische Weise erklärt werden (beachten Sie das Beispiel "/ * Inkrement i um 1 * /" in bereits bereitgestellten Antworten), um solche Kommentare relevant zu machen Nur für Programmierer, die mit der Sprache nicht vertraut sind.

Nichtsdestotrotz ist es die Absicht zu versuchen, den "unterdokumentierten" (aber bedeutungslosen) Code zu kommentieren, der wirklich "die Quelle allen Übels" ist. Die bloße Existenz von "unterdokumentiertem" Code ist ein schlechtes Signal - entweder ist es ein unstrukturiertes Durcheinander oder ein verrückter Hack mystischer, verlorener Absicht. Offensichtlich ist der Wert eines solchen Codes zumindest fraglich. Leider gibt es immer wieder Beispiele, bei denen es in der Tat besser ist, einen Kommentar in einen Abschnitt aus (visuell gruppierten) formatierten Codezeilen einzufügen, als ihn in eine neue Subroutine zu packen (beachten Sie die "dumme Konsistenz", die "der Hobgoblin der kleinen Köpfe" ist). .

Codelesbarkeit! = Codekommentare

Für lesbaren Code sind keine Anmerkungen durch Kommentare erforderlich. An jeder bestimmten Stelle im Code befindet sich immer ein Kontext einer Aufgabe, die dieser bestimmte Code erfüllen soll. Wenn der Zweck fehlt und / oder der Code etwas Rätselhaftes tut = um jeden Preis vermeiden. Lassen Sie nicht zu, dass seltsame Hacks Ihren Code füllen - dies ist eine direkte Folge der Kombination fehlerhafter Technologien mit Zeit- und Interessensmangel, um die Grundlagen zu verstehen. Vermeiden Sie mystischen Code in Ihrem Projekt!

Auf der anderen Seite kann Readable program = code + documentation mehrere legitime Abschnitte von Kommentaren enthalten, z. B. um die Erstellung von "Kommentare zur API" -Dokumentation zu erleichtern.

Befolgen Sie die Codestilstandards

Komischerweise geht es bei der Frage nicht darum, warum man Code kommentiert, sondern darum, wie man Code in einem stark synchronisierten Stil erzeugt (den jeder andere lesen / verstehen kann). Befolgen Sie in Ihrem Unternehmen Standards für den Codestil? Das Hauptziel besteht darin, das Schreiben von Code zu vermeiden, der überarbeitet werden muss, zu "persönlich" und "subjektiv" mehrdeutig ist. Wenn man also die Notwendigkeit sieht, einen Code-Stil zu verwenden, gibt es eine ganze Reihe von Werkzeugen, mit denen man ihn richtig implementieren kann - angefangen bei der Aufklärung der Mitarbeiter bis hin zur Automatisierung der Qualitätskontrolle des Codes (zahlreiche Einschränkungen usw.) und (Überarbeitung) Kontrollintegrierte) Code-Überprüfungssysteme.

Werden Sie ein Evangelist für Codelesbarkeit

Wenn Sie damit einverstanden sind, dass Code öfter gelesen wird als geschrieben. Wenn es für Sie wichtig ist, Ideen klar auszudrücken und klar zu denken, egal in welcher Sprache (Mathematik, Maschinencode oder Alt-Englisch). Wenn es Ihre Mission ist, langweilige und hässliche Arten des alternativen Denkens zu beseitigen. (Entschuldigung) , der letzte stammt aus einem anderen "Manifest"). Fragen stellen, Diskussionen anstoßen, nachdenkliche Bücher über Codereinigung verbreiten (wahrscheinlich nicht nur etwas, das Becks Entwurfsmustern ähnelt, sondern eher wie bereits von RC Martin erwähnt ), die sich mit Zweideutigkeiten befassen in der Programmierung. Weiter geht eine Stichprobe von Schlüsselideen (zitiert aus O'Reilly Buch über Lesbarkeit)

  • Vereinfachen Sie das Benennen, Kommentieren und Formatieren mit Tipps, die für jede Codezeile gelten
  • Verfeinern Sie die Schleifen, die Logik und die Variablen Ihres Programms, um Komplexität und Verwirrung zu verringern
  • Angriffsprobleme auf Funktionsebene, z. B. das Reorganisieren von Codeblöcken, um jeweils eine Aufgabe auszuführen
  • Schreiben Sie effektiven Testcode, der gründlich und präzise sowie lesbar ist

Wenn man das "Auskommentieren" ausschneidet, bleibt einem noch viel übrig (ich denke, das Schreiben von Code, der keine Kommentare benötigt, ist eine großartige Übung!). Die Benennung semantisch bedeutungsvoller Bezeichner ist ein guter Anfang. Als Nächstes strukturieren Sie Ihren Code, indem Sie logisch verbundene Operationen in Funktionen und Klassen gruppieren. Und so weiter. Ein besserer Programmierer ist ein besserer Schreiber (natürlich unter der Voraussetzung, dass andere technische Fähigkeiten vorhanden sind).


Sie können Code schreiben, der nur zum Spaß keine Kommentare benötigt. Dies könnte in der Tat eine großartige Übung sein, aber nicht, wenn Sie zum Code zurückkehren müssen und nichts wirklich ändern können, da Sie nicht wissen, warum diese Funktion so funktioniert, wie es der Fall ist. Vielleicht gab es einen Client, der dies wollte. Natürlich mag es sein, dass Sie sich in 1% des Projekts befinden, das außerhalb des Projekts dokumentiert und begründet ist, aber auch dann treffen Sie Entscheidungen während des Codierens, die nicht auf die Dokumentation zurückgeführt werden. Und ehrlich gesagt ... Wer liest Dokumentation, die nicht im Code enthalten ist. Mit Sicherheit keine Programmierer ;-P.
Nux

1
Ein guter Ingenieur kümmert sich um das gesamte System (inkl. Nicht codegenerierter Dokumentation) - aber hier geht es natürlich generell um Codierung. Mein Punkt ist, dass sich das Fehlen von Bezeichnern im Code mit den Namen foo , bar , tmpSomething2 und IamJustTooSmartAssToCare bereits verbessert die Situation und reduziert die allgemeine Notwendigkeit zu erklären, was der Code ist und was es tut. Code sollte mit "Denkmodus ein" geschrieben werden, wie eine gut gestaltete API, die von Menschen gelesen, verstanden, wiederverwendet und gewartet wird. Zu viele Kommentare in Code, die sonst schwer zu verstehen sind, sind ein sehr schlechtes Zeichen!
Yauhen Yakimovich

BTW-Programmierung / Codierung jeder Art von domänenspezifischer Logik in Form eines HACK oder einer "temporären" Fehlerbehebung führt in der Tat zu "seltsamen HACKs" - sobald Sie eine Menge von ihnen in die Blackbox gedrückt haben - erwarten Sie dies scheitern und zurückfeuern. Dies kann durch Fristen in Projekten der "realen Welt" usw. Gerechtfertigt sein. In Wirklichkeit ist es jedoch nur billige Software, die eine Umgestaltung der Domänenlogik erfordert (oder vielleicht einen neuen Job findet).
Yauhen Yakimovich

Ich bin damit einverstanden, dass die Lesbarkeit wichtig ist. Ich stimme nicht zu, dass Sie anscheinend sagen: "Wenn Sie die Lesbarkeit zu einer Priorität machen, brauchen Sie keine Kommentare." Das stimmt einfach nicht. Kenne ich schon. Zu überlegen, was Sie tun, kommt nicht nur von der sinnvollen Benennung von Variablen. Tun Sie das natürlich, fügen Sie aber auch einen Grund in den Kommentaren hinzu (auch wenn es sich in einem externen System um einen Fehler / eine Anforderung / eine Story handelt). Sag ich doch.
Nux

"Wenn Sie Lesbarkeit zur Priorität machen, brauchen Sie keine Kommentare" - ja genau das, was ich sage (und mir ist bewusst, dass dies nicht einfach zu erreichen scheint). Übrigens: Haben Sie Situationen, in denen die Aufrechterhaltung eines vollständigen Commit-Verlaufs (Versionskontrolle) nicht ausreicht, um über "Fehler- / Anforderungs- / Story-Nummer" nachzudenken? Ich habe ziemlich lange Commits praktiziert - arbeitet für mich und ermöglicht es, Code aus der Entwicklungsgeschichte herauszuhalten. Dadurch wird er weniger organisch gewachsen.
Yauhen Yakimovich

3

Bin ich falsch, mich auf die Code-Kommentare zu konzentrieren, oder deutet dies auf ein größeres Problem hin, das angegangen werden sollte?

Etwas. Großartiger Code benötigt keine Kommentare. Wie Sie sagten, ist sein Code jedoch nicht selbstdokumentierend. Ich würde mich also nicht auf die Kommentare konzentrieren. Sie sollten sich darauf konzentrieren, die Fähigkeiten und das handwerkliche Können Ihrer Entwickler zu verbessern.

Also, wie geht das? Doc Browns Vorschläge zu Reviews / Refactoring-Sitzungen sind eine gute Idee. Ich finde die Paarprogrammierung noch effektiver, aber die Implementierung kann auch erheblich schwieriger sein.


Pair Programming ist eine exzellente Idee. Sie gibt einem anderen Programmierer Einblick in die Entwicklung des Codes, damit er weiß, was vor sich geht, und macht zwei Personen für den Code verantwortlich. es gibt auch die Möglichkeit für einen der beiden zu sagen, dass etwas einen Kommentar haben sollte, weil es ungewöhnlich ist oder sich jemand anderes ändern könnte, weil es aussieht wie ... "ein Speicherverlust", "schlechte Codierung", usw. Einige Dinge müssen kommentiert werden, damit in Zukunft kein anderer etwas rückgängig macht, weil es nicht richtig aussieht.
Malachi

3

Zuallererst würde ich vorschlagen, dass Sie Ihre Herangehensweise an die Kommentare erneut ansprechen.

Wenn es sich um Dokumentationskommentare auf API-Ebene handelt (die später der Öffentlichkeit zugänglich gemacht werden), ist dieser Entwickler einfach nicht in der Lage, seine Arbeit zu erledigen. Aber für alle anderen Kommentare sei vorsichtig.

In den meisten Fällen, in denen ich ihnen begegne, sind Kommentare böse. Ich würde empfehlen, das Kapitel mit den Codekommentaren von "Clean Code" von Robert Martin zu lesen , um zu verstehen, warum.

Kommentare schaden Ihrem Code auf verschiedene Weise:

1) Sie sind schwer zu pflegen. Beim Refactoring müssen Sie zusätzliche Arbeit leisten. Wenn Sie die im Kommentar beschriebene Logik ändern, müssen Sie auch den Kommentar bearbeiten.

2) Sie lügen oft. Sie können Kommentaren nicht vertrauen und müssen stattdessen den Code lesen. Was die Frage aufwirft: Warum brauchen Sie die Kommentare überhaupt?

// this method returns the sum of 'a' and 'b'
public int GetHash(int a, int b)
{
    //the calculation of the hash
    int result = a*b;
}

(Der Hash ist nicht die Summe, sondern das Produkt.)

3) Kommentare machen den Code unübersichtlich und fügen nur sehr selten einen Wert hinzu.

Meine Lösung: Anstatt weitere Kommentare hinzuzufügen, sollten Sie versuchen, diese überhaupt loszuwerden!


4
Das ist nur albern. Ich hoffe, niemand glaubt, dass solch ein schlechter Kommentierungsstil hilfreich ist. Aber glauben Sie wirklich, dass Kommentare niemals verwendet werden sollten?
JMK

1
Ja, das ist ein dummer Vorschlag, wenn der Code unglaublich lesbar ist, kann ich nur wenige Kommentare verstehen, aber Kommentare sollten sagen, warum die Methode das tut, was sie ist und wo sie verwendet wird, sobald Sie mehr als nur ein paar Klassen erreicht haben Kein Grund für keine Kommentare, sie helfen allen.
DBlackborough

3
Das Wichtigste, an das Sie sich erinnern sollten, ist, dass, während Ihnen im Moment alles Sinn macht, jemand anderes Ihren Code in 3 Jahren warten muss. Nicht überdrehen.
xaxxon

4
@xaxxon Ganz zu schweigen von den Äpfeln, auch wenn Sie diese Person sind.
flauschiger

3
@mehaase - Nicht was, nicht wie, sondern warum ist der wichtigste Grund, dem Code Kommentare hinzuzufügen.
Henk Langeveld

1

Wenn ein Teammitglied Probleme hat, den Code eines anderen Teammitglieds zu verstehen (aus irgendeinem Grund); Dann sollte das Teammitglied in der Lage sein, herauszufinden, wer den Originalcode geschrieben hat (jedes vernünftige Revisionskontrollsystem), und sollte aufgefordert werden, den Autor des Codes zu bitten, ihn direkt zu erklären (z. B. zu seinem Schreibtisch zu gehen, sich hinzusetzen und darüber zu diskutieren).

Wenn in diesem Fall das Fehlen von Kommentaren ein Problem darstellt, verbringt die Person, die ihren Code nicht ausreichend kommentiert, einen großen Teil ihrer Zeit damit, zu erklären, was sie getan hat. und (wenn sie schlau sind) werden Kommentare hinzugefügt, um Zeit für all diese Erklärungen zu sparen.

Beachten Sie, dass es aus anderen Gründen sinnvoll ist, Teammitglieder zu ermutigen, sich gegenseitig um Erklärungen zu bitten. Beispielsweise ist ein Teammitglied möglicherweise weniger erfahren und kann von den erfahreneren Teammitgliedern etwas lernen.

Wenn Sie die Teammitglieder dazu ermutigen, sich gegenseitig um Erklärungen zu bitten, schaffen Sie meist ein selbstausgleichendes System. wo verschiedene Teammitglieder sich gegenseitig "automatisch anpassen".


1

Dies ist größtenteils eine Erweiterung der Antwort von tdammers, führt jedoch in regelmäßigen Abständen Codeüberprüfungen durch.

Wenn er (und andere Entwickler) sich hinsetzen, ihren Code durchgehen und sich mehr oder weniger vor ihren Vorgesetzten und Kollegen verteidigen, werden alle besser programmieren und in relativ kurzer Zeit einen echten Mehrwert schaffen. Kurzfristig wird der betreffende Entwickler keine Entschuldigung dafür finden, seinen Code zum Zeitpunkt der Überprüfung ordnungsgemäß zu kommentieren.

EDIT: Ich bin mir nicht sicher, warum jemand meinen Vorschlag ablehnt - vielleicht habe ich angenommen, dass die Vorteile der Codeüberprüfung allgemein bekannt sind ... Bitte lesen Sie diesen Thread als Community-Analyse der Praxis:

Prüft der Code bewährte Verfahren?


Wenn ein Raum voller Leute über Ihren unlesbaren Code lacht, können Sie besser codieren und kommentieren. :) Ich bin ein großer Verfechter von Code Reviews.
Evik James

1
Leute vor anderen Kollegen über Code lachen zu lassen, ist nicht der
richtige

1
Wenn die Leute, die die Codeüberprüfung durchführen, lachen, anstatt konstruktiv zu sein, müssen sie genauso geschult werden wie ein Entwickler, der keinen lesbaren Code schreiben kann. Kritik zu üben, die eher konstruktiv als abwertend ist, ist eine der sozialen Fähigkeiten, die Entwicklern häufig fehlen.
Martin Brown

1

In Anbetracht der oft extremen Ansichten zum Kommentieren zögere ich, nachzudenken. Davon abgesehen ...

Welche Argumente kann ich vorbringen, wenn Sie (nicht lesbaren) Code schreiben, der ordnungsgemäß dokumentiert werden sollte?

Das Schreiben von wartbarem und lesbarem Code erfordert Zeit, Übung und Erfahrung. Unerfahrene Programmierer (und leider auch viele erfahrene) leiden häufig unter dem Ikea-Effekt ( PDF ). Das liegt daran, dass sie es erstellt haben und mit ihm bestens vertraut sind, und sie sind sich sicher, dass der Code nicht nur großartig, sondern auch lesbar ist.

Wenn die Person ein großartiger Programmierer ist, ist kaum Dokumentation erforderlich. Die meisten Programmierer sind jedoch nicht großartig und ein Großteil ihres Codes wird in der Abteilung "Lesbarkeit" leiden. Das mittelmäßige oder sich entwickelnde Programmierpersonal zu bitten, "ihren Code zu erklären", ist nützlich, da es sie dazu zwingt, ihren Code kritischer zu betrachten.

Bedeutet dies, ihren Code zu "dokumentieren"? Nicht unbedingt. In der Vergangenheit hatte ich mit diesem Problem einen ähnlichen Programmierer. Ich zwang ihn zu dokumentieren. Leider war seine Dokumentation so unkenntlich wie sein Code und fügte nichts hinzu. Rückblickend wären Code-Reviews hilfreicher gewesen.

Sie (oder ein Delegierter) sollten sich mit diesem Programmierer zusammensetzen und einen Teil seines älteren Codes aufrufen. Nicht die neuen Sachen, die er kennt, wenn er nur daran arbeitet. Sie sollten ihn bitten, Sie mit minimaler Interaktion durch seinen Code zu führen. Dies könnte auch eine separate "Dokumentations" -Sitzung sein, in der er seinen Code schriftlich erklären soll. Dann sollte er Feedback zu besseren Ansätzen bekommen.

Nebenbei bemerkt ... manchmal wird eine Dokumentation benötigt, unabhängig davon, wie gut die "Lesbarkeit" des Codes ist. APIs sollten über Dokumentation verfügen, extrem technische und komplexe Vorgänge sollten über Dokumentation verfügen, die dem Programmierer hilft, die beteiligten Prozesse zu verstehen (häufig außerhalb des Wissensbereichs des Programmierers), und einige Dinge wie komplexe reguläre Ausdrücke sollten wirklich dokumentieren, womit Sie übereinstimmen.


0

Viele Projekte erfordern Code-Dokumentation: Schnittstellendokument, Designdokument, ...

Bei einigen Projekten muss diese Dokumentation in Codekommentare eingefügt und mit Tools wie Doxygen, Sphinx oder Javadoc extrahiert werden, damit Code und Dokumentation konsistenter bleiben.

Auf diese Weise müssen Entwickler nützliche Kommentare in Code schreiben, und diese Aufgabe ist in die Projektplanung integriert.


6
Nein, auf diese Weise müssen Entwickler einige Kommentare schreiben . Ihre Nützlichkeit nimmt mit dem Druck ab, sie zu schreiben, und sinkt häufig unter null in den aktiv schädlichen Bereich (ungültiger Kommentar ist schlechter als kein Kommentar), wenn die Richtlinie stark vorangetrieben wird.
Jan Hudec

1
@JanHudec - da stimme ich dir zu. Deshalb sollte eine gewisse Kontrolle eingestellt werden. Durch die automatische Generierung wird sichergestellt, dass z. B. Funktionsargumente im Code mit denen in Kommentaren identisch sind. Darüber hinaus wird durch die Verwendung einer einzelnen PDF-Datei anstelle eines Verzeichnisses mit Quelldateien die Dokumentation für mehr Benutzer besser lesbar (dh überprüfbar).
Mouviciel

2
Nun, nein, das tut es nicht. Wie werden Sie in der PDF-Datei feststellen, dass der Code tatsächlich etwas anderes tut als in der Beschreibung angegeben?
Jan Hudec

1
Vielleicht ist meine Meinung durch meine Domain, platzkritische Software, beeinflusst, bei der alles zwei- oder drei- oder viermal überprüft, kontrolliert, verifiziert, getestet wird. Durch die automatische Dokumentationserstellung werden Inkonsistenzen nicht unterdrückt, sondern reduziert.
Mouviciel

Ja, Sie sind stark voreingenommen. In solchen Bereichen ist es sinnvoll, dass in den meisten Einheiten Tests für die Qualitätssicherung ausreichen und die Dokumentation aller letzten Funktionen Zeitverschwendung wäre.
Jan Hudec

0

Ich werde erklären, worauf die meisten Antworten und Kommentare hindeuten: Sie müssen wahrscheinlich das eigentliche Problem hier herausfinden, anstatt zu versuchen, Ihre wahrgenommene Lösung durchzusetzen.

Sie sind motiviert, Kommentare in seinem Code zu sehen. warum ? Du hast einen Grund angegeben; warum ist dir dieser grund so wichtig Er ist motivierter, stattdessen etwas anderes zu tun. warum ? Er wird einen Grund angeben; Warum ist ihm dieser Grund so wichtig? Wiederholen Sie diesen Vorgang, bis Sie die Ebene erreicht haben, auf der der Konflikt tatsächlich auftritt, und versuchen Sie, dort eine Lösung zu finden, mit der Sie beide leben können. Ich wette, es hat sehr wenig mit Kommentaren zu tun.


0

Wenn Sie sich an einen guten Kodierungsstandard halten, ist eine Mindestanzahl von Kommentaren erforderlich. Namenskonventionen sind wichtig. Methodennamen und Variablennamen sollten ihre Rolle beschreiben.

Mein TL empfiehlt mir, weniger Kommentare zu verwenden. Er möchte, dass mein Code verständlich und selbsterklärend ist. Einfaches Beispiel: Variablenname für den Zeichenfolgentyp, der für das Suchmuster verwendet wird

   var str1:String="" //not uderstandable
   var strSearchPattern:String="" //uderstandable

0

Ich liebe die Antworten auf die Codeüberprüfung, aber vielleicht hilft mein Prozess auch ein bisschen.

Ich liebe Kommentare, aber ich füge sie fast nie beim ersten Durchgang in den Code ein. Vielleicht ist es nur mein Stil, aber während der Entwicklung (Refactoring, Schreiben von Tests usw.) drücke ich drei- bis fünfmal auf denselben Codeabschnitt.

Immer wenn ich etwas verwirrt bin oder wenn mir jemand eine Frage zu einem Codeabschnitt stellt, versuche ich, dies so zu korrigieren, dass es Sinn macht.

Dies kann so einfach sein wie das Hinzufügen eines Kommentars zum Entfernen einer verwirrenden Menge von Operationen in ihre eigene Funktion oder es kann einen größeren Refaktor wie das Extrahieren eines neuen Objekts auslösen.

Ich schlage vor, dass Sie alle Mitglieder der Gruppe dazu ermutigen, sich ihren Code "zu Eigen zu machen", damit er für andere lesbar ist. Dies bedeutet, dass Sie sich jedes Mal, wenn jemand Sie nach Ihrem Code fragt, dazu verpflichten, eine Änderung vorzunehmen - oder noch besser, dies zu tun Person, um die Änderung sofort vorzunehmen!

Erwägen Sie ernsthaft, dies als Teil Ihres "Teamvertrags" zu forcieren (und erstellen Sie auf jeden Fall einen Vertrag, wenn Sie keinen haben) - auf diese Weise haben sich alle darauf geeinigt und Sie haben ihn irgendwo an der Wand, so dass es keinen gibt. Keine Frage, was Sie zugestimmt haben.


0

Vielleicht muss dieser Typ eine Wertschätzung für gute Codierungsdisziplin erhalten und warum es für andere wichtig ist, den von ihm geschriebenen Code zu verstehen.

Ich habe in meiner Karriere an einigen wirklich schrecklichen Codebasen gearbeitet, bei denen der Code so schlecht organisiert war, Variablennamen so schlecht waren, Kommentare so schlecht oder gar nicht existierten, dass die Codebase meine Produktivität beeinträchtigte. Sie können nicht daran arbeiten, eine Codebasis zu reparieren oder zu verbessern, die Sie nicht verstehen. Wenn diese Codebasis für Neulinge undurchdringlich ist, verbringen sie mehr Zeit damit, sie zu verstehen, als daran zu arbeiten.

Es gibt keinen besseren Lehrer als harte Erfahrung!

In jeder Codebasis lauern einige schreckliche Teile, Teile des Systems, die niemand anfassen möchte, weil er Angst hat, etwas zu beschädigen, oder sie können keine sinnvolle Arbeit daran leisten, weil derjenige, der den Code geschrieben hat, längst abgewichen ist und ihr Verständnis verloren hat des Codes mit ihnen. Wenn dieser Code unkommentiert und nicht selbstdokumentierend ist, macht er die Sache nur noch schlimmer.

Ich schlage vor, Sie finden das Bit Ihrer Codebasis, das so ist, und geben Ihrem lästigen Codierer die Verantwortung dafür. Geben Sie ihm das Eigentum daran, machen Sie es zu seiner Verantwortung und lassen Sie ihn den wahren Schmerz des Arbeitens an Code erfahren, der nicht gewartet werden kann, weil er in kurzer Zeit nicht gut dokumentiert oder unmöglich zu verstehen ist. Nach ein paar Monaten Arbeit bin ich sicher, dass er anfängt, herumzukommen.


-1

Geben Sie ihm einen anderen Code ohne Kommentare und bitten Sie ihn, den Code zu verstehen. Vielleicht versteht er dann die Wichtigkeit von richtigen Kommentaren.


12
Ich bin der -1-Taste gerade noch aus dem Weg gegangen. Der größte Teil des Codes, den ich schreibe, enthält nur wenige Kommentare. Ich glaube nicht, dass sich in den letzten Jahren jemand darüber beschwert hat, dass es nicht nachvollziehbar ist. Mit sehr wenigen Ausnahmen braucht der Code, wenn Kommentare verstanden werden müssen , keine Kommentare, sondern Verbesserungen, um die Übersichtlichkeit zu gewährleisten. (Natürlich müssen Sie ein grundlegendes Verständnis der Syntax der Sprache voraussetzen. In C ++ sollten Sie die Verwendung nicht einfach vermeiden, reinterpret_cast<>()da dies für die Benutzer verwirrend sein kann. In C # können Sie, wenn ??Sie das tun , was Sie benötigen, verwenden es; etc.)
ein CVn

2
@ MichaelKjörling: Es kann sehr davon abhängen, welchen Code du schreibst. Wenn Ihr Code von ungewöhnlich bekannten Merkmalen einer Sprache oder einer API abhängt oder Sie etwas auf eine kontraintuitive Weise getan haben, um einen obskuren Fehler zu vermeiden, dessen Entdeckung Sie stundenlang in Anspruch genommen haben, ist das Kommentieren wesentlich effektiver es (möglicherweise einschließlich eines Links zu einem Artikel) als zu versuchen, den Code "klar" über diese Hintergrundinformationen ohne Kommentare zu machen.
LarsH

@ MichaelKjörling: Ich bin besonders motiviert, das heute zu sagen, weil ich den letzten Monat mit einer tiefen GIS-API gerungen habe. Die Funktionen der API sind komplex und nicht sehr gründlich dokumentiert. Wir stoßen ständig auf Überraschungen, von denen uns einige Tage zurückwerfen. Zu erwarten, dass jemand anderes (oder ich in 6 Monaten) diese Nuggets neu entdecken muss, um effektiv mit unserem Code zu arbeiten, wäre eine enorme Zeitverschwendung dieser Person. Und diese Geheimnisse lassen sich im Allgemeinen nicht durch eine kommentarlose "Verbesserung der Klarheit" dokumentieren.
LarsH

@ LarsH Das würde sich wahrscheinlich als eine der "sehr wenigen Ausnahmen" qualifizieren, die ich in meinem Kommentar erwähnt habe. Ich bin nicht dagegen zu kommentieren, wo es tatsächlich Mehrwert bringt ; Es ist jedoch nicht die Anzahl der Kommentare, die das Lesen von Code erleichtert oder erschwert. Mit einer API wäre ich jedoch eher geneigt, diese Macken an anderer Stelle zu dokumentieren. sagen wir, in einem wiki oder ähnlichem. Fügen Sie möglicherweise neben jeder Verwendung auch einen Link zur entsprechenden Seite hinzu. Auf diese Weise müssen Sie nicht nach einem anderen Ort suchen, der diese bestimmte Funktion der API verwendet, wenn der Code nicht so funktioniert, wie Sie es beim ersten Versuch erwartet haben.
ein Lebenslauf

@ MichaelKjörling: allgemein vereinbart. Ob diese Ausnahmen selten sind oder nicht, hängt von der Domäne ab, für die Sie programmieren, und von den APIs, die Sie verwenden müssen. Links / Verweise sind gut für Notizen, die allgemein gelten, nicht nur für die aktuelle Situation. Niemand möchte eine Dissertation im Code selbst.
LarsH

-1

Führt dieser Programmierer eine Codewartung durch? Wenn nicht, sollte er: nach unerwünschten Projekten suchen und ihm die Wartung zuweisen.

In der Regel handelt es sich hierbei um schlecht dokumentierte Projekte, bei denen Sie stundenlang versuchen zu verstehen, was gerade korrigiert wird, was leicht zu korrigieren gewesen sein könnte. Wenn diese Art von Erfahrung ihn nicht auf den neuesten Stand bringen will, wird eine korrekte und nützliche Dokumentation nichts bewirken.


1
Dieser Ansatz bewirkt eher, dass der Programmierer aufhört, als dass er sie in der richtigen Art und Weise trainiert, Dinge zu tun.
Martin Brown

-1

In einem meiner früheren Projekte fehlten Dutzende von Kommentaren (Algorithmus, Ergebnisse oder einige grundlegende JavaDoc-Informationen), und so habe ich beschlossen, 130 Probleme für ihn zu erstellen und ihm alle 4 Tage eine E-Mail-Benachrichtigung über jedes Problem zu senden. Nach 3 Wochen hatte er 280 Probleme, dann beschloss er, Kommentare zu schreiben.


-1

Kommentare haben nur einen Zweck:

Warum macht dieser Code das?

Wenn ein Kommentar nicht erklärt, warum etwas so ist, wie es ist, sollte es entfernt werden. Nutzlose Kommentare, die den Code überladen, sind weniger als nutzlos, sie sind aktiv schädlich.

Ich habe die Angewohnheit, meine Kommentare zum offensichtlichsten Teil meiner IDE zu machen. Sie werden mit weißem Text auf einem grünen Hintergrund hervorgehoben. Das macht wirklich auf sich aufmerksam.

Dies liegt daran, dass der Code erklärt, was etwas tut, und die Kommentare dafür sind, warum es es tut. Ich kann das nicht genug betonen.

Ein gutes Beispiel für einen Kommentar:

/* Must instantiate clsUser before trying to encrypt a password because the code to 
   encrypt passwords only uses strong encryption if that module is loaded. */

Ein schlechtes Beispiel:

/* instantiate clsUser */

Wenn Sie Kommentare als "Abschnitte" des Codes verwenden: Zerlegen Sie Ihre Mammutmethode in kleinere, nützliche benannte Funktionen und entfernen Sie die Kommentare.

Wenn Sie sagen, was Sie in der nächsten Zeile tun: Machen Sie den Code selbsterklärend und entfernen Sie den Kommentar.

Wenn Sie Kommentare als Warnmeldungen verwenden: Stellen Sie sicher, dass Sie den Grund angeben.


-2

Um die Antworten hier zu ergänzen, könnte ich hinzufügen: "Wenn Sie wollen, dass es richtig gemacht wird, müssen Sie es selbst tun."

Ich meine nicht, "Chef-Code-Kommentator" zu werden, ich meine, ein Vorbild zu werden, um zu demonstrieren, was Sie von diesem anderen Entwickler erwarten. Sie sagen , dass das Zeigen effektiver ist als das Erzählen . Wenn Sie den Nutzen von Qualitätskommentaren demonstrieren oder diesen anderen Entwickler sogar als Mentor unterstützen (sofern er dies wünscht), werden Sie möglicherweise mehr Erfolg bei der Annahme von Codekommentaren haben.

In ähnlicher Weise gibt es zu Hause einige Haushaltsaufgaben, die ich nicht gerne mache. Allerdings sind diese Aufgaben zufällig die "pet peeve" -Aufgaben meiner Frau ... Aufgaben, die erledigt werden müssen , damit sie glücklich ist. Die gleiche Situation gilt umgekehrt. Möglicherweise müssen Sie akzeptieren, dass dieser andere Entwickler andere Prioritäten als Sie hat und nicht in allen Punkten mit Ihnen übereinstimmt. Die Lösung, die meine Frau und ich gefunden haben, ist, dass wir für diese "Haustier-Ärger" -Aufgaben einfach selbst vorgehen müssen, auch wenn dies bedeutet, dass wir ein bisschen mehr auf eigene Faust arbeiten müssen.


1
Ich würde argumentieren, dass das Anzeigen eines saubereren Codes / das Umgestalten des Codes, damit er besser lesbar ist, eine größere Änderung darstellt, als das Einfügen von Kommentaren in den Code.
Makoto

Kann mir jemand erklären, was sie an meiner Idee nicht mögen ...?
M. Dudley

-6

Einfach: Wenn der Mitarbeiter keine Kommentare abgibt, fordern Sie ihn auf, shift+alt+jbei jeder Methode gleichzeitig mit der Eingabe des Codes auf Auto-Kommentar zu drücken . Bitte überarbeiten Sie den Code, um diese Probleme zu vermeiden.


11
"Automatischer Kommentar"? So ist das , wo alle , die „i erhöht um 1“ Kommentare von kommen? Welche IDE tut dies (damit ich Jobs vermeiden kann, bei denen sie verwendet werden)?
ein Lebenslauf

Ich habe versucht, dies in etwas Lesbares zu ändern, bin mir aber nicht sicher, ob das Wort zuerst ein Komma davor oder danach haben soll. Gibt der Ausdruck bei jeder Methode zuerst einen Kommentar oder zuerst einen Hinweis ?
TRiG
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.