Wie überprüfe ich meinen eigenen Code? [geschlossen]

177

Ich arbeite an einem Projekt solo und muss meinen eigenen Code pflegen. In der Regel wird die Codeüberprüfung nicht vom Autor des Codes durchgeführt, sodass der Überprüfer den Code mit frischen Augen betrachten kann - ich habe jedoch keinen solchen Luxus. Welche Methoden kann ich anwenden, um meinen eigenen Code effektiver zu überprüfen?

Max Yankov
quelle
34
Ich bin mir nicht sicher, ob Sie das können, zumindest nicht effektiv - Sie können ein Überprüfungsteam unter codereview.stackexchange.com ausfindig machen, wenn Ihr Code jedoch nicht proprietär ist
jk.
8
Sie können Ihren eigenen Code nicht überprüfen. Wenn Sie keine anderen Menschen bekommen können, würde ich das Beste in Betracht ziehen, was Sie tun können, um so viele statische Analysegeräte zu verwenden, wie Sie in die Hände bekommen können, und ALLE Warnungen zu aktivieren.
136
Das Überprüfen Ihres eigenen Codes ist einfach. Schreiben Sie einen Stückcode. Machen Sie 2 Wochen / Monate / Jahre Pause, während Sie weitere Software erlernen und entwickeln. Kehren Sie zu diesem Teil zurück und versuchen Sie zu verstehen, was der Code tut. Sie wissen, dass Sie etwas gelernt haben, als Sie dachten: "Was für ein Idiot hat das geschrieben ?!".
Yuriy Zubarev
6
@YuriyZubarev Aber was ist, wenn Sie nicht auf Wochen / Monate / Jahre warten möchten?
anatoliiG
12
Sie können Ihren Code in einem veränderten Bewusstseinszustand überprüfen. Oder Sie können in einem veränderten Geisteszustand codieren und eine Codeüberprüfung an Ihr normales, langweiliges Selbst delegieren.
SK-logic am

Antworten:

92

Verwenden Sie zunächst Tools, um so viel wie möglich zu überprüfen. Tests (die mit einer angemessenen Codeabdeckung abgesichert sind) geben Ihnen ein gewisses Vertrauen in die Richtigkeit des Codes. Statische Analysewerkzeuge können viele Best-Practice-Aspekte erfassen. Es wird immer Probleme geben, bei denen Sie menschliche Augen brauchen, um zu bestimmen, und Sie werden nie so gute Arbeit leisten, wenn Sie Ihre eigenen Sachen überprüfen, wie bei jemand anderem. Es gibt jedoch einige Dinge, die Sie tun können, um zu helfen

  • Prüfungstests existieren und bestehen (haben möglicherweise eine Ziel-Testabdeckung, obwohl Sie dies in bestimmten Fällen möglicherweise brechen müssen, aber Sie sollten in der Lage sein zu rechtfertigen, warum)
  • Statische Analyse besteht (es wird auch falsche Negative geben, aber das ist in Ordnung, solange Sie begründen können, warum es dann in Ordnung ist, sie zu unterdrücken).
  • Führen Sie eine Checkliste mit weiteren zu überprüfenden Dingen (fügen Sie diese idealerweise als neue statische Analyseregeln hinzu, wenn möglich). Stellen Sie sicher, dass Sie alles überprüfen, was die SA nicht überprüfen kann, z natürlich eines der 2 schwierigen Probleme, die der Informatik bekannt sind)
  • Wenn ein Fehler festgestellt wird, prüfen Sie, ob die Ursache systembedingt ist, und prüfen Sie, warum er in früheren Tests oder Überprüfungen nicht gefunden wurde

Dies ist natürlich hilfreich, wenn Sie auch anderen Code überprüfen

jk.
quelle
3
In Bezug auf die Checkliste ist es sehr nützlich , eine Spezifikation zu haben .
Wayne Werner
Ich mag keine Checklisten. Sie sorgen dafür, dass sich die Prüfer auf die Checkliste konzentrieren, anstatt über das Problem, die Lösung und viele andere Dinge nachzudenken. Also schlage ich vor, sie minimal zu machen.
Balog Pal
57

Schauen Sie sich die Code Review Stack Exchange-Site an. Es dient zum Teilen von Code aus Projekten, an denen Sie zur Begutachtung arbeiten :

Code Review Stack Exchange ist eine Frage-und-Antwort-Website, auf der Sie eine Peer Review Ihres Codes durchführen können. Wir arbeiten zusammen, um die Fähigkeiten von Programmierern weltweit zu verbessern, indem wir Arbeitscode übernehmen und verbessern.

Wenn Sie in den folgenden Bereichen Feedback zu einem bestimmten Arbeitsstück Code aus Ihrem Projekt suchen…

  • Best Practices und Verwendung von Entwurfsmustern
  • Sicherheitsprobleme
  • Performance
  • Richtigkeit in unerwarteten Fällen

Sie können auch Tools zur statischen Codeanalyse verwenden, um bestimmte Probleme zu erkennen. In einigen Fällen werden jedoch Fehlalarme ausgegeben, und Sie können nicht vorschlagen, wie das Design verbessert werden kann.

BЈовић
quelle
2
Das ist eine exzellente Antwort auf die Frage "Wie kann ich meinen Code überprüfen lassen?" Und ein guter Rat im Allgemeinen (das werde ich auf jeden Fall tun) - aber immer noch ein wenig offtopisch.
Max Yankov
5
Normalerweise mag ich keine 5-Wörter-Antwort, aber diese ist einfach so richtig .
maple_shaft
20
Im besten Fall ist dies nur eine begrenzte Lösung. Es ist nicht machbar, Ihre gesamte tägliche Ausgabe kontinuierlich auf CR.SE zu stellen, da es sich um ziemlich alltäglichen Code handeln wird. CR.SE wird auch bei der Suche nach Problemen, die ein nicht triviales Verständnis der gesamten Anwendungsarchitektur oder -domäne erfordern, für die die App geschrieben wurde, keine große Hilfe sein. Informell, schauen Sie sich den Code Ihrer Kollegen an, wenn er im Stil überprüft wurde. Bewertungen, in denen ich diese Art von Fehlern arbeite, sind wahrscheinlich häufiger als die, die sich zum Abfangen über CR.SE eignen.
Dan Neely
3
Der reale Wert in reviewing wird Teile des Codes bekommen Sie aber nie als ein Problem erkannt und hervorgehoben darstellen würden nicht offensichtlich noch selbsterklärend oder gar nicht logisch korrekt . Sie können das Snippet nicht veröffentlichen, code reviewwenn Sie nicht bereits wissen, dass es problematisch ist.
ZJR
3
@ZJR Ist der Code in Ihren Projekten zu 100% überprüft? Wenn ja, haben Ihre Ingenieure zu viel Freizeit. Was Ihren zweiten Kommentar betrifft, sehe ich keine Probleme darin, eine Codeüberprüfung in einem Code anzufordern, den Sie für perfekt halten.
BЈови12
29

Ich habe mehrere völlig verschiedene Personen in meinem Kopf entwickelt. Einer von ihnen ist nicht einmal ein Programmierer! Wir unterhalten uns, diskutieren die neuesten Nachrichten und überprüfen den Code des jeweils anderen.

Ich kann meinen Ansatz nur empfehlen.

ps Er scherzt nicht.

Shabunc
quelle
27
Meine Namen sind Bill, Jeff, Bob und Alice, und wir genehmigen diese Nachricht.
Michael K.
22

Ich stimme der Meinung von jk-s zu, dass eine Einzelbewertung nicht so effizient ist wie eine 2-Personen-Bewertung. Sie können jedoch versuchen, das Beste daraus zu machen:

Kurzfristige Überprüfung (kurz nachdem der Code erstellt wurde)

Ich benutze Git als lokales Repository. Immer wenn ich ein Feature beendet oder einen Fehler behoben habe, übertrage ich die Änderungen in das Repository.

Bevor ich einchecke, vergleiche ich, was ich in meinem Code geändert habe und überlege:

  • spiegeln Variable / Methode / Klassennamen immer noch wider, wofür sie verwendet werden?

Langzeitüberprüfung (6 Monate nach Erstellung des Codes)

Ich frage mich:

  • Kann ich in einem Satz beschreiben, was eine Klasse / Methode / Variable tut?
  • Wie einfach ist es, eine Klasse für sich zu verwenden (ohne die anderen Klassen) oder einen Test für Unittest zu schreiben?
k3b
quelle
4
+1 für kurzfristigen Überprüfungsvorschlag. Wenn Sie git verwenden, um alle Änderungen zwischen verschiedenen Zeitpunkten anzuzeigen, kann dies wirklich dazu beitragen, den Code zu bereinigen.
Leo
Ich mag die Idee der Langzeitüberprüfung, aber ich denke, ich würde sie wahrscheinlich zu einer allgemeinen Projektüberprüfung zusammenfassen und vielleicht nicht den gesamten Code
überarbeiten
Ich versuche etwas dazwischen zu machen: Überprüfe meinen Code in ungefähr einem Monat. Ich mag auch die 6-Monats-Rezension.
David G
18

Legen Sie zunächst Ihren Code so lange wie möglich beiseite. Arbeite an etwas anderem, einem anderen Teil des Codes. Auch nach einem Tag werden Sie erstaunt sein, was Sie finden.

Zweitens dokumentieren Sie Ihren Code. Viele Programmierer hassen es, ihren Code zu dokumentieren, aber setzen Sie sich und schreiben Sie Dokumentation, wie man den Code verwendet und wie es funktioniert. Wenn Sie Ihren Code anders betrachten, werden Sie Fehler finden.

Es wurde gesagt, dass wahre Meisterschaft eines Faches die Fähigkeit ist, es jemand anderem beizubringen. Mit der Dokumentation versuchen Sie, jemand anderem Ihren Code beizubringen.

Jim C
quelle
15

Verwandeln Sie diese Debugging-Technik in eine Codeüberprüfungstechnik: http://en.wikipedia.org/wiki/Rubber_duck_debugging

Das Konzept wirkt Wunder, wenn Sie sich in eine richtige Denkweise versetzen, um Code so zu verarbeiten, als wäre er neu.

Patrick Hughes
quelle
3
Ich glaube, die Ententechnik wurde an mehreren Orten unabhängig voneinander erfunden. Hier ist eine großartige Geschichte dazu: hwrnmnbsol.livejournal.com/148664.html
Russell Borogove
10
Heutzutage ist meine Gummiente das Frage-zu-Frage-Formular von Stack Exchange. Der Wunsch, eine gute Frage zu schreiben , macht den Trick.
Kevin Reid
Exzellente Beratung. Es ist sogar noch besser, da ich bereits eine Gummiente auf meinem Schreibtisch habe (sie war hier als Vorbild für eine meiner Spielfiguren, aber ich denke, es macht keinen zusätzlichen Job eines IT-Beraters aus).
Max Yankov
5
@KevinReid, ich würde gerne einige Statistiken zu aufgegebenen SE-Posts sehen - insbesondere zu solchen, die die Leute länger als 60 Jahre geschrieben haben. Ich weiß, dass ich das selbe mindestens 5 Mal selbst gemacht habe.
Wayne Werner
Wah! Ich wusste nicht, dass das "eine Sache" ist. Ich habe soeben gesagt, dass mein Professor für Informatik dies während unseres ersten Vortrags vor Jahrzehnten empfohlen hat. Er empfahl eine Katze, aber ich nehme an, eine Gummiente würde das tun. Eines ist sicher, es funktioniert nicht ohne den anthropomorphen Sidekick :-)
Mawg
13

Zusätzlich zu den nützlichen Tools, die in anderen Antworten erwähnt wurden, ist es meiner Meinung nach hilfreich, Ihre Denkweise zu ändern, wenn Sie eine Codeüberprüfung durchführen. Es ist albern, aber ich sage mir: "Ich setze meinen Code-Review-Hut auf". Ich mache das gleiche mit QA.

Dann ist es wichtig zu beschränken sich auf diese Einstellung. Sie sind entweder der Rezensent oder der Rezensent, Sie können nicht beide gleichzeitig sein. Als Rezensent mache ich objektive Notizen, um sie dem Rezensenten mitzuteilen. Ich ändere den Code nicht, während ich ihn überprüfe. Das sollte ein Überprüfer nicht tun.

Die Formalität fühlt sich manchmal etwas absurd an, aber wenn ich alleine arbeite, stelle ich fest, dass ich oft in viele Richtungen gezogen werde. Daher kann es sein, dass ich die Überprüfungsschleife nicht unbedingt schließe, bevor etwas anderes eintritt - diese Formalität (und ich spreche wirklich über grobe Notizen in einem Wiki-Tool) ist nützlich, um sicherzustellen, dass die Überprüfung durchgeführt wird. Ebenso füge ich mit aufgesetztem QA-Hut Tickets für Fehler hinzu, bevor ich sie behebe.

Steve Jackson
quelle
Ich glaube nicht, dass es möglich ist, Ihren eigenen Code zu überprüfen
BЈовић
4
@VJovic - Ich glaube nicht, dass ich den Code bestmöglich überprüfen kann, aber ich finde normalerweise Dinge, die verbessert werden könnten. Ich habe auch viel Code anderer Leute gelesen. Mein Standpunkt, wie "guter" Code aussieht, entwickelt sich ständig weiter. Der Code, den ich vor Jahren geschrieben habe, ist mir peinlich. Es ist nicht anders als das Proofing Ihres eigenen Artikels - es erfordert Übung und viel mehr Aufwand, aber es ist machbar. Der Schlüssel, den ich nicht selbst überprüfen kann, ist, ob eine Abstraktion für jemanden anderen Sinn ergibt. Aber ich kann mich fragen, wie man etwas einfacher macht, ist dies notwendig, etc.
Steve Jackson
@VJovic - Wie ThomasOwens erwähnt hat, können Sie auch eine Checkliste aus Fehlern der Vergangenheit erstellen und diese ziemlich objektiv durchgehen. Das ist das andere Schöne daran, dass Sie formal sind. Sie können sehen, was Sie während der Überprüfung verpasst haben, und Ihren Prozess entsprechend anpassen. Ich finde, ich lerne eine Menge Lektionen, indem ich mich selbst verfolge und mich bemühe, meinen Ansatz zu ändern, wenn er angezeigt wird.
Steve Jackson
3
Es ist sehr wichtig, in die richtige Denkweise zu kommen. Ich finde es hilfreich, wenn ich den Code tatsächlich ausdrucken und mit einem Markierungsstift auf Papier durchblättere. Dann kann ich beim Überprüfen nichts ändern (was mich daran hindert, in den Codierungsmodus zu wechseln) und Kommentare und Bewegungspfeile leicht auf das Papier kritzeln.
Leo
Das bedeutet, alten Code und nicht neuen Code zu überprüfen. Dafür muss man Erfahrung sammeln, was lange dauern kann.
BЈови at
9

Es scheint, dass die allgemeine Meinung ist, dass Selbstüberprüfung nicht effektiv ist. Ich bin nicht einverstanden und ich denke, dass eine Selbstüberprüfung viele Probleme aufdecken kann, wenn sie gründlich durchgeführt wird.

Hier einige Tipps aus meiner langjährigen Erfahrung:

  • Halten Sie eine grobe Checkliste bereit. Dies sind Dinge, die Sie markieren möchten, während Sie Ihren Code lesen.
  • Schalten Sie Ihre Codeüberprüfung offline. Es mag verschwenderisch klingen, aber nehmen Sie Ausdrucke, die Sie mit Anmerkungen versehen und hin- und herblättern können, oder das digitale Äquivalent von schön hervorgehobenen PDFs, die mit einem iPad synchronisiert sind, das dann offline geschaltet wird. Gehen Sie von Ihrem Schreibtisch weg, damit Sie Ihren Code ohne Ablenkung überprüfen können.
  • Tun Sie es am frühen Morgen und nicht am Ende eines Arbeitstages. Frisches Augenpaar ist besser. Tatsächlich könnte es hilfreich sein, einen Tag vor der erneuten Überprüfung des Codes nicht mit dem Code zu arbeiten.

Nur zu Ihrer Information - diese Richtlinien waren Teil der Empfehlungen in Oracle vor ein paar Jahren, als ich dort arbeitete, wo das Ziel darin bestand, Fehler "vorgelagert" zu erkennen, bevor der Code getestet wurde. Es hat sehr geholfen, obwohl es von vielen Entwicklern als langweiliger Job angesehen wurde.

Aditya Sahay
quelle
3
Ich würde auch "24 Stunden warten" hinzufügen, damit Sie sich nicht den Code ansehen, den Sie gerade geschrieben haben. Stellen Sie sicher, dass es mindestens 1 Tag alt ist, damit Sie es sehen, nachdem Sie über Nacht geschlafen haben und es 24 Stunden lang nicht berührt haben.
Jeff Atwood
Ich verwende oft Ausdrucke, wenn ich Code überprüfen oder speziell überarbeiten muss. Es wirkt Wunder für mich.
Yitznewton
Wie in einigen Filmen haben wir von GB gelernt, dass ein falscher Orgasmus besser ist als kein Orgasmus - Selbstbewertung ist besser als nichts. Ja, Sie können trainieren, um viel Gummiente zu machen. Aber es ist immer noch ziemlich ineffektiv im Vergleich zum tatsächlichen Peer-Review. vor allem, ohne für einige Zeit wirklich guten Rezensenten ausgesetzt zu sein, um Methoden zu erlernen.
Balog Pal
8

Die Personal Software Process-Technik für Überprüfungen kann hilfreich sein, wenngleich historische Daten über Ihre Arbeit und die Qualität der Produkte erforderlich sind.

Sie beginnen mit historischen Daten zu Ihren Arbeitsprodukten, insbesondere Anzahl und Art der Mängel. Es gibt verschiedene Methoden zum Klassifizieren von Fehlern, wie z. B. diese aus einem PSP-Kurs . Sie können Ihre eigenen entwickeln, aber die Idee ist, dass Sie in der Lage sein müssen, zu sagen, welche Fehler Sie auf dem Weg machen.

Sobald Sie wissen, welche Fehler Sie machen, können Sie eine Checkliste entwickeln, die Sie während einer Überprüfung verwenden können. Diese Checkliste behandelt die häufigsten Fehler, die Sie machen und die Ihrer Meinung nach am besten in einer Überprüfung aufgefangen werden können (im Gegensatz zur Verwendung eines anderen Tools). Verwenden Sie bei jeder Überprüfung eines Arbeitsprodukts die Checkliste, um nach Fehlern zu suchen, diese zu dokumentieren und zu beheben. Überarbeiten Sie diese Checkliste von Zeit zu Zeit, um sicherzustellen, dass Sie sich auf echte, relevante Probleme in Ihrem Code konzentrieren.

Ich würde auch empfehlen, die Werkzeugunterstützung zu verwenden, wenn dies sinnvoll ist. Statische Analysetools können dabei helfen, einige Fehler zu finden, und einige unterstützen sogar die Stilprüfung, um die Konsistenz und einen guten Codestil zu gewährleisten. Die Verwendung einer IDE mit Codevervollständigung und Syntaxhervorhebung kann Ihnen auch dabei helfen, Probleme zu vermeiden oder zu erkennen, bevor Sie auf "Erstellen" klicken. Unit-Tests können Logikprobleme abdecken. Und wenn Ihr Projekt ausreichend umfangreich oder komplex ist, kann die fortlaufende Integration all dies zu einem regelmäßig ablaufenden Prozess zusammenfassen und nette Berichte für Sie erstellen.

Thomas Owens
quelle
7

Solo zu arbeiten bedeutet, dass Sie, sofern Sie nicht völlig unbekannten Personen vertrauen, Code in Ihrem Namen zu überprüfen, die Art und Weise überprüfen müssen, in der Sie Ihre Software schreiben, um die Codequalität aufrechtzuerhalten.

In erster Linie sollten Sie ein Mittel haben, um sicherzustellen, dass Ihr Code den Anforderungen entspricht, und zweitens, dass sich Ihr Code relativ leicht ändern lässt, wenn Sie später entscheiden, dass Sie etwas falsch gemacht haben. Mein Vorschlag wäre, aus folgenden Gründen einen verhaltensorientierten Entwicklungsansatz anzuwenden :

  1. BDD bedeutet, zuerst einen Code-Test zu schreiben. Dadurch wird sichergestellt, dass der gesamte Code von Tests abgedeckt wird.
  2. BDD ist im Wesentlichen TDD, jedoch mit einem etwas anderen Fokus und einer anderen "Sprache". Dies impliziert, dass Sie Ihren Code während der Arbeit kontinuierlich überarbeiten und anhand Ihrer Tests sicherstellen, dass Ihre Überarbeitungsbemühungen weiterhin sicherstellen, dass Ihr Code Ihren Produktspezifikationen entspricht.
  3. Die BDD-Sprache fordert dazu auf, Tests in Form von Aussagen zu verfassen, die Anforderungen im Wesentlichen als Komponententests kodieren.

Die Idee hier ist also, dass Ihre kontinuierliche Überarbeitung des Codes, auch nachdem Sie Ihre Tests bestanden haben, bedeutet, dass Sie Ihren eigenen Code effektiv überprüfen und Ihre Komponententests als "zusätzliches Augenpaar" verwenden, das sicherstellt, dass Ihr Code nicht funktioniert. Sie weichen von den Anforderungen ab, die in den Tests kodiert werden. Eine hohe Testabdeckung basierend auf den Anforderungen stellt außerdem sicher, dass Sie Ihren Code in Zukunft ändern können, ohne die Anforderungen zu verletzen.

Das eigentliche Problem für Sie ist, ob Sie in der Lage sind, potenzielle Probleme in Ihrem Code zu erkennen, die auf einen Umgestaltungsbedarf hinweisen. Es gibt verschiedene Profilerstellungstools auf dem Markt, die Ihnen dabei helfen können, sowie verschiedene andere Tools, die sich mit Codequalitätsmetriken befassen. Diese können oftmals Aufschluss über viele Dinge geben, die Codeüberprüfungen übersehen können, und sind ein Muss, wenn Sie Projekte selbst entwickeln. In der Realität ist Erfahrung jedoch der Schlüssel, und sobald Sie die Gewohnheit haben, bei Ihrem Refactoring gnadenlos zu sein, werden Sie Ihren eigenen Code wahrscheinlich viel kritischer sehen. Wenn Sie es noch nicht getan haben, empfehlen wir Ihnen, Martin Fowlers Refactoring- Buch als Ausgangspunkt zu lesen und nach einer guten BDD-API zu suchen, die in der von Ihnen gewählten Sprache für Sie geeignet ist.

S.Robins
quelle
5

Immer, wenn ich in der gleichen Situation war wie Sie, habe ich versucht, das Problem zu lösen, dass ich zu nah am Code bin, um ihn objektiv untersuchen zu können. Es versteht sich von selbst, dass ein Tool nicht denselben Wert wie ein erfahrener Prüfer liefern kann, aber Sie können es dennoch verwenden, um Bereiche mit schlechtem Design zu lokalisieren.

Ein Tool, das ich in dieser Hinsicht ziemlich nützlich fand, war SourceMonitor . Es ist ein bisschen simpel, aber es gibt eine gute Meinung auf mittlerer Ebene über Ihren Code, z. B. die Anzahl der Methoden in einer Klasse und die Komplexität jeder Methode. Ich war immer der Meinung, dass diese Art von Informationen genauso wichtig (wenn nicht wichtiger als) ist, wie die Durchsetzung von Codierungsstilen mit Tools wie StyleCop usw. (die wichtig sind, aber häufig nicht die Ursache der größten Probleme sind). Verwenden Sie diese Tools mit den üblichen Haftungsausschlüssen: Wissen Sie, wann eine Faustregel verletzt werden muss, und etwas, das in einem Code-Metrik-Tool nur grün ist, ist nicht automatisch von guter Qualität.

Daniel B
quelle
5

Ich kann Ihnen nicht sagen, wie oft ich einem Code-Reviewer etwas erklärt habe und die Glühbirne in meinem Kopf geht an und sagt: "Hey, warte eine Minute." Daher finde ich oft meine eigenen Fehler in der Codeüberprüfung, die die andere Person nicht gesehen hat. Sie könnten das also versuchen, indem Sie den Code so erklären, als säße eine Person neben Ihnen, die zu verstehen versuchte, was Sie getan haben und warum.

Eine andere Sache, die ich häufig in Code-Reviews finde, ist, dass der Entwickler die Anforderungen nicht wirklich befolgt hat. Vergleichen Sie also Ihren Code und was er tut, um die tatsächliche Anforderung zu erfüllen.

Wir machen häufig Dinge wie SSIS-Pakete mit ähnlichen strukturellen Anforderungen - für Code-Reviews habe ich eine Checkliste mit zu überprüfenden Dingen entwickelt (ist die Konfiguration korrekt, ist die Protokollierung eingerichtet, wird die Metadaten-Datenbank verwendet, befinden sich die Dateien am Standardspeicherort). usw.). Möglicherweise haben Sie einige Dinge, die Sie bei jeder Codeüberprüfung überprüfen können. Setzen Sie sich und überlegen Sie, was Sie auf eine Checkliste setzen möchten, um sicherzustellen, dass Ihre Codeüberprüfung durchgeführt wird (erster Punkt, stellen Sie sicher, dass die Anforderung erfüllt ist, nächster Punkt hat möglicherweise etwas mit Überfüllungs- und Protokollierungsfehlern zu tun). Wenn Sie Fehler machen und diese korrigieren, können Sie der Liste weitere Elemente hinzufügen (z. B. gehe ich zum nächsten Datensatz in einer Schleife oder wiederhole ich endlos das gleiche erste Element - es dauert nur eine Endlosschleife bis lehre dich, danach zu suchen!).

HLGEM
quelle
1
Wie Patrick Hughes in seiner Antwort vorschlägt, hilft die Verwendung eines Proxys wie eines Rubber Duckies, um für den Rezensenten einzutreten, der Denkweise.
Russell Borogove
5

Geben Sie es 3 Monate, dann gehen Sie zurück und sehen Sie sich Ihren Code an. Ich verspreche dir, wenn du nichts falsches finden kannst (oder fragst, wer diesen Müll geschrieben hat!), Bist du ein besserer Mann als ich!

Verschütten
quelle
Das ist auch meine Technik. 3 Monate sind genug, um alles, was ich nicht sofort verstehen kann, zu vereinfachen oder besser zu dokumentieren, aber kurz genug, damit ich mich noch daran erinnere, was gerade passiert, um es leicht zu korrigieren.
Eric Pohl
5

Normalerweise drucke ich meinen gesamten Code aus, setze mich in eine ruhige Umgebung und lese ihn durch. Dabei finde ich viele Tippfehler, Probleme, Dinge, die man überarbeiten muss, und räume auf. Es ist ein guter Selbsttest, den meiner Meinung nach jeder machen sollte.

user20326
quelle
Eine gute Ergänzung zu den obigen Ratschlägen, danke - obwohl ich denke, dass ein Tablet oder ähnliches (mit Editor, aber ohne Entwicklungsumgebung) auch funktionieren würde. Ich frage mich, wer das abgelehnt hat und warum.
Max Yankov
4

Zurück am College war ich Schreiblehrer. Es hat mir sicherlich einige Perspektiven für das Codieren eröffnet, an die viele Entwickler meiner Meinung nach nie gedacht hätten. Eines der wichtigsten ist, Ihren Code laut vorzulesen. Es klingt nicht nach viel, aber ich werde ein perfektes Beispiel geben, mit dem sich wohl jeder identifizieren kann.

Haben Sie jemals eine E-Mail oder einen Artikel geschrieben, mehrmals gelesen, um sicherzustellen, dass er korrekt ist, und ihn dann gesendet, um festzustellen, dass Sie einen eklatanten Rechtschreib-, Tipp- oder Grammatikfehler haben? Ich habe das erst gestern gemacht, als ich einen Kunden gebeten habe, die Shit-Taste anstelle der Shift-Taste zu drücken. Wenn Sie in Ihrem Kopf lesen, sehen Sie, was Sie sehen möchten.

Dies ist eine Abkürzung für die Vorschläge, die andere gemacht haben: "Warte nur einen Tag, eine Woche oder einen Monat". Wenn Sie es laut lesen, fangen Sie die gleichen Dinge. Ich weiß nicht, warum es so effektiv ist, aber nachdem ich mit Hunderten von Studenten zusammengesessen und sie vorgelesen habe, kann ich nur sagen, dass es funktioniert.

Herrscher
quelle
+1 Dies würde mit dem Ansatz "Erkläre es deiner Katze" einhergehen. Die Verwendung verschiedener Teile Ihres Gehirns kann hilfreich sein, wenn Sie keinen Kollegen einsetzen können.
BMitch
plus eins für shit key
Mawg
3

Die meisten Menschen neigen dazu, ihren Code als ihr eigenes Baby zu betrachten und sie eher mit dem Ego als mit der Realität zu füttern. Überprüfen Sie den Code genau wie alle anderen Codeprüfungen, wenn Sie den Code einer anderen Person sehen. Vergiss ganz, dass du etwas geschrieben hast. Überprüfen Sie jede Codezeile. Eine Checkliste wäre hilfreich, um die Ästhetik der Überprüfung des eigenen Codes zu verbessern. Automatisierte Tools für die Codeüberprüfung können in gewissem Umfang hilfreich sein. Ich habe einige Tools wie klocwork (kommerzielle Software) verwendet. Dies ist sehr nützlich, wenn Sie in großen Projekten arbeiten und mehrere Entwickler daran arbeiten. Konzentrieren Sie sich immer auf die Fehlererkennung und nicht auf die Korrektur.

Es empfiehlt sich jedoch, sich selbst zu überprüfen und später mindestens zwei weitere Personen mit unterschiedlichen Rollen zur Überprüfung einzubeziehen.

sarat
quelle
3

Überlegen Sie, ob Sie eine Fagan-Inspektion selbst durchführen - Sie müssen den Prozess anpassen, weil Sie selbst sind, aber Sie sollten in der Lage sein, einiges daraus zu machen. Der Trick wird darin bestehen, den richtigen "Regelsatz" zu finden, um Ihren Code als Solo-Entwickler zu bewerten, und dann die Disziplin zu haben, diese Fragen jedes Mal in einer kritischen, analytischen, gnadenlosen Stimmung zu stellen. Ich vermute, Sie möchten vielleicht zunächst Ihre eigenen 4-5 entscheidenden Fragen erörtern und sie dann im Laufe der Zeit weiterentwickeln. Einige Leute sind gegen formelle Inspektionen, weil sie so zeitintensiv zu sein scheinen ... bevor Sie entscheiden, dass sie zu teuer sind, bedenken Sie alle statistischen Beweise dafür, dass die Durchführung von Inspektionen tatsächlich die Projektzeit verkürzt. Hier ist ein Wikipedia-Link, mit dem Sie weitere Recherchen starten können:

http://en.wikipedia.org/wiki/Software_inspection

Es gab auch einige Bücher, zB Google für "Software Inspection Process" von Strauss und Ebenau.

Eine andere Möglichkeit ist, jemanden für die Inspektion eines wichtigen Projekts zu bezahlen - oder ihn gelegentlich für die Inspektion Ihres gesamten Codes zu bezahlen. Dieser Typ ist ziemlich gut, wir haben ihn einige Male ausgeflogen, um unsere neueren Entwickler zu trainieren:

http://www.javaspecialists.eu/

user49613
quelle
0

Abgesehen von allen Empfehlungen für die Codeüberprüfung können Sie Tools wie PMD und findBug verwenden, um den Code auf dem neuesten Stand zu halten.

Ashish Sharma
quelle
0

Dies wurde noch nicht in eine Antwort eingefügt (wurde aber als Kommentar zu einer bestehenden Antwort hinzugefügt)

Überprüfen Sie Ihren Code nach einem erholsamen Schlaf. Beginnen Sie den Tag beispielsweise mit der Überprüfung des Codes, den Sie am Vortag geschrieben haben.

Dies gibt Ihnen natürlich nicht die kollektive Erfahrung eines Teams, aber es gibt Ihnen die Möglichkeit, den Code aus einer neuen Perspektive zu überprüfen.

Wenn Sie beispielsweise einen Code mit einem bösen Hack hinterlassen haben, sind Sie möglicherweise nicht dazu geneigt, ihn zu reparieren, wenn Sie den Code unmittelbar danach überprüfen. Schließlich kennen und akzeptieren Sie das Vorhandensein dieses Hacks, wenn Sie mit der Überprüfung Ihres Codes beginnen. Aber wenn Sie gut geschlafen haben, sind Sie wahrscheinlich motivierter, eine bessere Lösung zu finden.

Wenn wir schlafen, hört das Gehirn tatsächlich nicht auf, an den Problemen zu arbeiten, die wir haben, sodass Sie möglicherweise dort eine Lösung finden, obwohl sich diese Lösungen manchmal auf seltsame Weise anbieten .

Pete
quelle