Ich bin Teil eines Teams von sieben Entwicklern in einem kleinen Softwareunternehmen und versuche, regelmäßige Gruppencode- und Entwurfsprüfungen einzuführen. Wir haben in der Vergangenheit einige Überprüfungen durchgeführt, die jedoch sporadisch waren. Ich würde es gerne regelmäßiger machen.
Ich habe Code Complete und andere ähnliche Ressourcen lesen und sie sprechen über die Mechanik , wie Code - Reviews durchzuführen , aber ich habe es nicht gelungen , alle bewährten Verfahren zu finden , wie zu wählen , was zu überprüfen. Wir haben eine Codebasis, die älter als acht Jahre ist und eine Vielzahl von Sprachen abdeckt. Es gibt also viel zu sehen.
Hier sind einige der Faktoren, die sich auf die Auswahl auswirken könnten:
- Sprache: C, Java, SQL, PL / SQL
- Codealter: Neuer Code vs. alter Code
- Code-Nutzung: Häufig verwendeter Code im Vergleich zu (effektiv) totem / wenig verwendetem Code
- Codewichtigkeit: Kritischer Code im Vergleich zu nicht kritischem Code
- Entwickler: Junior-Entwicklercode vs Senior-Entwicklercode
Ich verstehe, dass dies keine Frage mit einer absoluten endgültigen Antwort ist, aber jede Anleitung wäre nützlich.
Einige periphere Fragen:
- Ansätze zur Codeüberprüfung (Erwähnungen zur Überprüfung kritischer Abschnitte und neuer Entwicklercode)
- Sollten wir versuchen, unseren gesamten Code zu überprüfen?
quelle
Überprüfen Sie zunächst alle Änderungen, die Sie am Code vorgenommen haben. das wird verhindern, dass sich das Problem verschlimmert. Beginnen Sie dann mit der Überprüfung des Codes anhand der Häufigkeit der Änderungen. Dies werden die Problembereiche sein.
Sie sollten herausfinden, wie Sie nachverfolgen können, dass Sie einen Codeabschnitt überprüft haben, damit Sie den Überprüfungsumfang Ihres Codes im Verhältnis zu anderen Bedenken analysieren können.
Wenn Sie feststellen können, welcher Code nicht von Ihren Tests abgedeckt wird, wird dies zur Überprüfung mit höherer Priorität behandelt.
quelle
Überprüfen Sie alle vorgenommenen Änderungen, bevor Sie die Produktion starten. Installationsskripte, Quellcode, Datenbankänderungen, alles! Bei der Codeüberprüfung geht es darum, zu verhindern, dass fehlerhafter Code in die Produktion gelangt. Sei es ein schlechtes Organisationsschema oder einfach ein eingeführter Fehler, weil etwas übersehen wurde.
Das Refactoring des aktuellen Codes, an dem Sie arbeiten, geht Hand in Hand mit der Codeüberprüfung. Wenn ich beispielsweise Code überprüfe und in einer Klasse, die eine Fehlerbehebung enthielt, doppelten Code vorhanden ist, würde ich diesen nicht weitergeben, selbst wenn der Entwickler diesen Code in der Fehlerbehebung nicht geändert hätte. Ich würde sie zurückgehen lassen und den doppelten Code entfernen.
Wenn Sie unablässig umgestalten, wird die Codeüberprüfung nützlich. Sonst ist es Zeitverschwendung.
Wenn Sie den Codeüberprüfungsprozess als Schritt in Ihren Entwicklungsprozess integrieren, wird die Codebasis mit der Zeit besser. Besser noch, Sie sollten Ihren Entwicklern nicht erlauben, neue Funktionen oder Fehlerbehebungen vorzunehmen, bis der Codeüberprüfungs-Rückstand leer ist. Dies stellt sicher, dass die Codeüberprüfung durchgeführt wird.
Gibt es bekannte Bereiche, die überarbeitet werden müssen, dauert dies jedoch lange (dh 1 Woche oder länger). Erstellen Sie dann ein Arbeitselement für dieses Refactoring und fügen Sie es als zu bearbeitendes Element hinzu.
quelle
Überprüfen Sie zunächst den gesamten neuen Code und nehmen Sie Änderungen am vorhandenen Code vor.
Bei der Überprüfung von Änderungen an vorhandenem Code sollte der Entwickler die Boyscout-Regel befolgen. Lass den Code besser als er ihn gefunden hat.
Das bedeutet nicht, dass Sie die gesamte Datei reparieren müssen, um perfekt zu sein. Aber es sollte nicht zu dem Durcheinander beitragen, es sollte es ein bisschen besser machen. Vielleicht, indem Sie die Änderungen in neue Klassen verschieben, die richtig strukturiert sind, und den Rest der ursprünglichen Codedatei so lassen, wie er ist (schließlich funktioniert er).
Sobald Sie als Entwickler beginnen, den Code zu verbessern, indem Sie den gesamten neuen Code und die Änderungen überprüfen, sollten Sie wissen, in welchen Bereichen der Anwendung die meisten Änderungen erforderlich sind. Überprüfen Sie diese und diskutieren Sie nach und nach, wie sie verbessert werden können.
Das Überprüfen von Code, der vor 10 Jahren geschrieben wurde, ist sinnlos. Der Entwickler hätte sich in diesen 10 Jahren verbessern müssen. Es macht also keinen Sinn, es noch einmal zu lesen, um zu erfahren, was Sie alle wissen.
Der Zweck der Codeüberprüfung besteht darin, die Fehler, die Sie derzeit machen, zu verbessern und zu korrigieren und dieses Wissen im Team zu teilen.
quelle
In meinem Projekt ist die Codeüberprüfung in den meisten Fällen ein Muss für jede Aufgabe / User Story / jeden Fehler, der entwickelt wird. Wir verwenden Scrum / Agile-Prozesse, und Ticket / Story wird erst nach dem Schreiben von Komponententests und dem Abschluss der Codeüberprüfung in den Build verschoben (dies ist ein Rückstand für die Qualitätssicherung).
Zu diesem Zweck verwenden wir die Atlassian FishEye- Analyse mit Crucible Code Review, die in JIRA + SVN integriert ist.
Wenn der Entwickler den Code für eine bestimmte Story eincheckt, erstellt er eine neue Codeüberprüfung in FishEye, in der er die anderen Mitglieder des Teams auswählt, die die Überprüfung durchführen sollen.
Sobald die Codeüberprüfung abgeschlossen ist (das Tool hebt die übermittelten Änderungen hervor und ermöglicht es, die Kommentare für die jeweilige Codezeile zu hinterlassen), korrigiert der Entwickler die genannten Probleme / implementiert die vorgeschlagenen Verbesserungen und verschiebt das Ticket in die Spalte "Built" in JIRA bereit zum Testen und dass keine weiteren Codeänderungen für dieses spezielle Arbeitselement erwartet werden.
Dies stellt auch sicher, dass die Qualitätssicherung keine Änderungen testet, die möglicherweise während der Umgestaltung des Codes nach der Codeüberprüfung fehlerhaft sind .
Zusammenfassend muss der gesamte Code überprüft werden - dies unterstützt die hohe Qualität des Codes, was normalerweise zu einem besseren Design, einer besseren Lesbarkeit, Wartbarkeit und Testbarkeit des Codes führt und die Entwicklungsleistung auf lange Sicht verbessert.
quelle