Nach meiner Erfahrung ist es am besten, das gesamte Team den Code überprüfen zu lassen. Wir verwenden in jedem Projekt eine Commit-Mailingliste, in der Sie alle Codeänderungen am Versionskontrollsystem verfolgen können. Die meisten unserer Entwickler haben ihre projektspezifische Mailingliste abonniert, weil sie an Codeänderungen interessiert sind.
Wenn jemand im neuen Quellcode einen schlechten Weg bemerkt, erklärt er dem Committer entweder, wie er es besser machen kann, wenn der Committer ein Auszubildender ist, oder er beginnt eine Diskussion darüber, wenn es sich um einen erfahreneren Committer handelt.
Natürlich garantiert diese Methode nicht, dass der gesamte neue Code überprüft wird, insbesondere in stressigen Zeiten, in denen niemand im Team die Möglichkeit hat, jede Codeänderung zu verfolgen. Auch ist nicht jeder Entwickler dafür verantwortlich, dass jeder Entwickler seine Arbeit gut macht, allein davon können Sie nicht garantieren, dass sie überprüft wird. Aber zumindest in unseren Teams gibt es immer einen technischen Manager, der für die technische Qualität verantwortlich ist.
Ich bin ein echter Fan von Code-Bewertungen, wenn sie den folgenden Bewertungen entsprechen:
- Jeder Entwickler hat die Möglichkeit, den gesamten Code und die Argumente seiner Meinung nach zu überprüfen
- Niemand hat das Recht, anderen Code zu missbrauchen
- Nicht nur schlechter Code aktiviert eine Diskussion, sondern auch guter Code
- Die Diskussionen enden mit Glück für alle Beteiligten
- Die Überprüfung erfolgt nahezu in Echtzeit, zumindest bevor die Funktion abgeschlossen ist
Was ich gelernt habe ist, dass wenn Sie jemand sind, der jede Codezeile überprüft und der Meinung ist, dass Sie solche Dinge wie die Codequalität in Bezug auf Codeformatierung oder Codeeffizienz kontrollieren müssen, Sie selbst sehr ineffizient sind, weil Sie Dinge tun, für die Maschinen etwas tun können Sie. Ihr Ziel sollte es sein, ein kontinuierliches Integrationssystem zu verwenden, das die Build- und Codequalität jedes Codebeitrags steuert. Wenn dieses System Berichte generiert und an die Mitwirkenden sendet, ist alles perfekt.
Ich muss zugeben, dass meine Vorschläge keinen Sinn ergeben, wenn Sie den Code überprüfen müssen, weil Sie die Qualität eines Programmierers kontrollieren oder bewerten müssen. In diesem Fall würde ich den Quellcode auch nicht zeilenweise überprüfen. Ich würde Dinge wie überprüfen:
- Gibt es sicherheitsrelevante Probleme?
- sind beabsichtigte APIs verwendet
- Hat der Code die angegebene Architektur angewendet?
- hat er nützliche Tests geschrieben (aber nur wenn er implizit angewiesen wurde, musste ich lernen)
- Dokumentation
- Build-Prozess
- ... und wahrscheinlich noch mehr
Wenn Sie ein erfahrener Entwickler sind, werden Sie auf jeden Fall immer Dinge wie Schleifen finden, die Sie mit besserer Leistung machen könnten. Natürlich ist es nützlich, anderen dieses Wissen zu erklären, aber dies sollte nicht Teil der Überprüfungssitzung sein. Wenn es signifikante Leistungsprobleme gibt, dann nicht, weil er (oder sie) eine weniger effiziente Variante eines Listentyps verwendet hat.
Da die anfängliche Frage lautete, warum einige Personen eine bessere Bewertung abgeben als andere, würde ich antworten, dass diese Personen möglicherweise eine Vorschau erstellen, bevor die eigentliche Überprüfung beginnt. Dies bedeutet, dass sie wahrscheinlich selbst darauf vorbereitet sind, genau zu wissen, was sie überprüfen möchten .