Was beinhaltet eine Standard-Codeüberprüfung?

19

In meinem Unternehmen wird per E-Mail besprochen, welche Funktion implementiert ist und welche Art von Fehler behoben wurde, der von demjenigen gesendet wurde, der den Code geschrieben hat. Der Prüfer, der die E-Mail erhält, überprüft den Code und erörtert nach seiner Meinung die Qualität und die Bearbeitung des Codes. Was beinhaltet eine Standard-Codeüberprüfung?

Nicole
quelle
10
Hier haben wir anscheinend keine Zeit für Codeüberprüfungen, aber viel Zeit, um die daraus resultierenden Fehler zu beheben. Ich wünschte, ich hätte Spaß gemacht.
MetalMikester

Antworten:

12

Nach meiner Erfahrung konzentrieren sich die meisten formalen Code-Überprüfungen auf die Überprüfung des Stils, weil es einfach ist. Selbst wenn Sie eine Checkliste der Dinge, die Sie sich ansehen müssen, zur Verfügung stellen, ist es für die Augen ziemlich einfach, eine Verglasung zu bekommen.

Ich habe festgestellt, dass Unit-Test-Überprüfung mehr Nutzen bietet. Die meisten Entwickler, mit denen ich zusammengearbeitet habe, wissen nicht, wie man einen Unit-Test richtig durchführt, und sobald sie das "Aha!" Momentan verbessert sich auch der Rest ihres Codes. Hier ist ein Hinweis: Es ist kein Komponententest, wenn der Benutzer etwas untersuchen muss, und es ist kein Komponententest, wenn Sie gerade etwas starten, um es in einem Debugger auszuführen.

Berin Loritsch
quelle
LOL, ein gutes Verständnis der Unit-Tests ist ein Muss. Die gute Nachricht ist, dass das Testen nur der gesunde Menschenverstand ist - man braucht weniger Zeit, um es herauszufinden, als zu sagen ... die Zeit, die benötigt wird, um eine neue Sprache zu lernen.
Job
Ich finde mich bei Sachen, bei denen es an Unit-Test-Berichterstattung mangelt, amüsant. Wenn ich Unit-Tests in einer Code-Überprüfung sehe, ist dies der erste Ort, den ich sehe. Wenn ich sehe, dass die Komponententests die Geschäftsanforderungen und vernünftigen Randbedingungen erfüllen (gegebenenfalls auf Null prüfen, Grenzwerte auf Wertebereiche prüfen), dann neige ich dazu, nicht zu wählen - was nicht bedeutet, dass Sie sich mit kleinen Dingen befassen sollten . Es ist nur so, dass der "Beweis im Pudding ist". Es ist schwer, mit gut konstruierten Unit-Tests zu streiten, die bestanden werden.
Greg Burghardt
6

Es hängt davon ab, um welches Problem es sich handelt. Oft ist es ein einfacher Stempel. "Hier ist das Problem, sieh dir diese Zeile hier an, es ist offensichtlich, was falsch läuft, und hier habe ich es behoben." "Yup, das ist ziemlich offensichtlich. Gehen Sie voran und checken Sie es ein."

Aber wenn etwas mehr involviert ist, geht es normalerweise so:

  • Führen Sie die Prüfung auf Änderungen in TortoiseSVN aus und rufen Sie eine Liste der geänderten Dateien ab.
  • Bringen Sie den Prüfer in Ihr Büro.
  • Erläutern Sie das Problem, indem Sie die CR des Fehlerverfolgungssystems als Referenz öffnen.
  • Gehen Sie die Liste der Dateien in TortoiseSVN durch und öffnen Sie jede Datei in BeyondCompare , um die Änderungen anzuzeigen.
  • Wenn der Prüfer die Änderungen nicht versteht, erläutern Sie, was Sie getan haben und warum.
  • Dem Rezensenten fällt möglicherweise etwas auf, das nicht gut aussieht. Wenn ja, besprechen Sie dies, bis Sie sich einig sind, ob es geändert werden soll oder nicht. (Wenn einfache Änderungen vorgenommen werden müssen, können Sie die Datei sogar in BeyondCompare bearbeiten.)
  • Wenn Sie Änderungen vorgenommen haben, kompilieren Sie es neu und stellen Sie sicher, dass es erstellt wird!
  • Führen Sie das Programm aus, um dem Überprüfer zu demonstrieren, dass Ihr Fix tatsächlich funktioniert.
  • Check es ein.
Mason Wheeler
quelle
4

IMO, Eine Codeüberprüfung hat nichts mit Funktionen oder Fehlern zu tun, sondern konzentriert sich auf die Qualität des Codes und die dafür geschriebenen Tests.

Setzen Sie sich also neben Ihren Kollegen und lassen Sie ihn den Code erklären oder nehmen Sie den Code und gehen Sie ihn durch, wie es die Situation erfordert.

Es hilft, wenn alle gegen dieselben Standards programmieren und wenn Sie Tools wie fxCop verwenden, um einen Teil des Prozesses zu automatisieren.

Syg
quelle
2

Ich bevorzuge die Codeüberprüfung, bei der der Entwickler mit dem Prüfer zusammensitzt und den Code zeilenweise durchläuft, um ihn zu erklären. Oft sieht der Entwickler ein Problem bei der Ausführung der Erklärung, das der Rezensent möglicherweise noch nicht gesehen hat, weshalb dies meine Präferenz ist. Ich mache auch Code-Überprüfungen, wo mir der Code gesendet wird, und lese ihn selbst und mache Kommentare, aber ich finde, dass diese tendenziell länger dauern (ich überprüfe und entwerfe Kommentare und sende sie an Entwickler, die sie lesen und WTF machen, meine sie und E-Mails Ich melde mich zurück und erkläre, und zwei oder drei Runden später treffen wir uns und ich zeige auf dem Bildschirm, was ich meine und der Entwickler sagt: "Oh ja, jetzt verstehe ich es.") und sei weniger produktiv, da es weniger echte Diskussionen gibt und mehr: "Du hast das falsch gemacht."

Es ist auch wichtig, Standards in einer Codeüberprüfung durchzusetzen, sie jedoch nicht zum einzigen Schwerpunkt zu machen.

Der Code wird jedoch erst dann an die Produktion gesendet, wenn der Code-Prüfer zufrieden ist oder der Manager (nicht der Entwickler) ihn oder sie überstimmt hat (auch die Code-Prüfer haben sich geirrt). Dies ist kritisch oder die Codeüberprüfung ist nur ein bürokratischer Prozess ohne Mehrwert, es sei denn, der Codeüberprüfer muss den endgültigen Code genehmigen, bevor er übermittelt wird.

HLGEM
quelle
Ich empfehle immer, es dem Entwickler überlassen zu lassen, was er mit dem Bewertungsfeedback macht. Der Prüfer weiß nicht unbedingt Bescheid, und wenn eine Einwilligung erforderlich ist, müssen Sie möglicherweise einige Zeit investieren, um den Prüfer zu schulen. Ich würde allerdings eine abschließende Integrationsprüfung durch einen leitenden Entwickler in Betracht ziehen.
Joppe
0

Zuerst müssen Sie Codierungsstandards haben, und diese sind mehr als nur Syntax. Wenn Leute in Ihrem Unternehmen anfangen, müssen sie die Richtlinien Ihres Unternehmens so gut wie möglich kennen, bevor sie mit dem Codieren beginnen . Wenn im Überprüfungsprozess alle Arten von Verstößen festgestellt werden, werden sie höchstwahrscheinlich:

  • nicht aus zeitlichen Gründen behoben werden
  • als ärgerlicher empfunden als das, was die Richtlinien wert sind

Die Richtlinien sollten sinnvoll sein und es sollte geeignete Werkzeuge geben, um Verstöße zu finden und die Umgestaltung so einfach wie möglich zu gestalten. Achten Sie immer auf das Ziel der Richtlinien und die Codeüberprüfung

Mein Ziel ist es, den Code so einheitlich wie möglich zu gestalten und Probleme mit der Wartbarkeit und Lesbarkeit zu finden. Ein sekundäres Ziel kann sein, mehr Menschen mit einer bestimmten Software auf den neuesten Stand zu bringen.

Die Richtlinien in meinem Kopf könnten zB bestehen aus:

  • Allgemeine Syntax- und Codierungsrichtlinien (wählen Sie eine bereits vorhandene aus und verwenden Sie automatisch überprüfte Tools)
  • Richtige Ausnahmebehandlung
  • Richtige Protokollierung
  • Gute Verwendung der Paradigmen für die Sprache (SOLID für OO-Sprachen)
  • Offensichtliche und gut durchdachte Abhängigkeiten zwischen Komponenten (verwenden Sie Tools wie NDepend)
  • Arbeitendes Build-Skript
  • Dokumentation vorhanden (Entwicklerstart, Installationsanleitung)
  • interne Bibliotheken zu verwenden
  • Unternehmensrichtlinien
  • Werkzeuge von Drittanbietern, die nicht zulässig sind
  • Unit-Tests vorhanden und nicht fehlgeschlagen
  • Code-Abdeckung von 90%
  • ...

In diesem Fall besteht die Codeüberprüfung darin, dass die Software anhand der Richtlinien überprüft wird und:

  • Besprechen Sie Verstöße mit dem Programmierer
  • Beheben Sie unnötige Verstöße
  • notwendige Verstöße kommentieren
KeesDijk
quelle