Wir ändern derzeit den Entwicklungsprozess und fragen uns, ob wir versuchen sollten, 100% unserer Commits von Fachleuten zu überprüfen.
Welche Erfahrungen haben Sie mit Code-Überprüfungen gemacht?
- Verbringst du "viel" Zeit mit ihnen (sagen wir 1/2 Stunde pro Tag) oder überfliegst du sie nur für maximal 5/10 Minuten?
- Haben Sie eine feste Zeit pro Tag / Woche / Sprint / Projekt?
- Ist es Ihrer Meinung nach am wichtigsten, dass 100% des Codes einer Peer-Review unterzogen werden sollen oder dass 100% nicht erforderlich sind?
code-reviews
Simeon
quelle
quelle
Antworten:
Wir haben in jeder Geschichte eine Aufgabe zur Überprüfung des Codes. Jemand, der idealerweise nicht an der Entwicklung dieser Story beteiligt ist, überprüft alle mit dieser Story verbundenen Codeänderungen. Es läuft gut.
Viel Zeit? Nicht sehr viel, hängt davon ab, wie viel Code vorhanden ist - wir suchen nach offensichtlichen Fehlern, Tippfehlern, grundlegenden Überprüfungen der Logik, nicht erfassten Ausnahmen usw.
Es ist ein Qualitätsschritt, der Fehler findet, daher hat er einen gewissen Wert. Das Zuteilen von Zeit ist möglicherweise nicht die beste Methode. Wie wäre es, wenn etwas ziemlich komplex ist, sollte es einer Codeüberprüfung unterzogen werden?
Übrigens ist es wichtig, dass jemand anderes die Codeüberprüfung durchführt.
quelle
Ein wichtigeres Problem, das davon abhängt, wie viel über Ihren Code von Überprüfungen abgedeckt wird, ist, wie effektiv die Überprüfungen sind. Wenn Ihre Bewertungen nur wenige oder gar keine Probleme entdecken, ist es sinnlos, eine vollständige Abdeckung zu erreichen.
Arbeiten Sie zuerst daran, Ihre Bewertungen effektiver zu gestalten, und legen Sie dann die Berichterstattung fest.
Überprüfungen sollten nicht nur am Code, sondern auch am Design durchgeführt werden.
Bewertungen sind auch kein Ersatz für Tests und Tools:
Wenden Sie eine voreingestellte Zeit pro Monat (oder pro Sprint) für Überprüfungen an. Wählen Sie den Code, den Sie am nächsten dedizierten Slot überprüfen möchten, mit einer Heuristik wie:
Und denken Sie daran, Sie überprüfen Code (oder Design oder Tests) und nicht Autoren.
Ich empfehle folgende Lesematerialien:
Selektive Überprüfung ohne Hausaufgaben Die am
besten gehüteten Geheimnisse der Peer-Code-Überprüfung
quelle
Es hängt davon ab, ob.
Es hängt davon ab, was Ihre Software tut:
Wenn es einen elektronischen Schrittmacher oder ein Space Shuttle steuert, dann auf jeden Fall ja.
Wenn es ein Wegwerfprototyp ist, dann wahrscheinlich nein.
Es hängt auch davon ab, wie gut Sie mit Ressourcen ausgestattet sind, wie erfahren Ihre Entwickler sind und wonach Sie in Codeüberprüfungen suchen. (Denken Sie daran, dass der durchschnittliche Entwickler, der den Code eines anderen überprüft, wahrscheinlich Stilprobleme bemerken und subtile algorithmische Fehler übersehen wird. Dies gilt insbesondere, da die Überprüfung von Code eine gewisse Belastung darstellt.)
Mein Rat wäre, Ihren Code-Überprüfungsaufwand für Code zu sparen, bei dem die Korrektheit von entscheidender Bedeutung ist und die Kosten für unentdeckte Fehler hoch sind.
quelle
Zunächst müssen Sie die folgende Frage beantworten: Warum überprüfen Sie den Code?
Mit dieser Antwort können Sie herausfinden, welcher Code überprüft werden muss.
Einige Codeüberprüfungen führen genau das aus, was das Testen getan hat oder hätte. Wenn dies das Ziel Ihrer Bewertungen ist, ist es eine gute Idee, sich 100% zu nähern, wenn Sie nur wenige Tests haben. Wenn Sie jedoch Test-Tools dies tun lassen, muss der gesamte Code nicht mehr überprüft werden.
Die meisten guten Überprüfungen scheinen darauf ausgerichtet zu sein, Wissen auszutauschen und die Fähigkeiten der Entwickler in der Überprüfung zu verbessern (entweder derjenige, der den Code geschrieben hat, oder derjenige, der den Code überprüft). Aus diesem Grund ist es wahrscheinlich zu viel des Guten, wenn Sie sicherstellen, dass Sie 100% des Codes überprüfen.
quelle
In einer perfekten Welt würde alles explizit vom Autor gelesen und von mindestens einer anderen Person begutachtet, von den Anforderungsspezifikationen über Benutzerhandbücher bis hin zu den Testfällen. Aber Überprüfungen, selbst einfache Schecks, kosten Zeit und Geld. Dies bedeutet, dass Sie auswählen müssen, was Sie überprüfen und wann Sie es überprüfen sollten.
Ich empfehle, die zu überprüfenden Elemente zu priorisieren, auszuwählen, wie Sie sie überprüfen möchten, und zu versuchen, so viel wie möglich mit der entsprechenden Detailstufe zu überprüfen. Die Priorisierung kann auf der Art des Artefakts basieren, z. B. dass Anforderungen überprüft werden müssen, Design- und Produktionscode überprüft werden sollten und Testfälle überprüft werden können. Darin können Sie auch festlegen, dass Komponenten mit hohem Risiko oder hohem Wert eine Priorität in der Überprüfung oder vielleicht eine formellere Überprüfung erhalten.
Was die Zeit anbelangt, geht alles auf die Priorität der Komponente zurück. Es gab Zeiten, in denen ich 10 bis 15 Minuten lang nachgesehen habe, und andere Male, in denen mehrere Personen den Code einzeln gelesen haben, gingen sie in einen Raum, um einen formelleren Inspektionsprozess durchzuführen, der 30 bis 45 Minuten dauert (abhängig von der Größe von) das Modul).
Letztendlich ist es ein Gleichgewicht zwischen Zeit, Kosten, Umfang und Qualität. Sie können nicht alle haben, also müssen Sie optimieren, wo Sie können.
quelle
Wenn Sie vorhaben, überhaupt Überprüfungen durchzuführen, sollten Sie einige gemeinsame Richtlinien zum Überprüfungsumfang und -ziel festlegen, um sicherzustellen, dass Überprüfungen keine unnötigen Reibungen zwischen den Teammitgliedern verursachen.
Kohärente Teams bauen bessere Projekte auf. Menschen könnten ihre Beziehung wegen Unsinns oder wegen Perfektion verlieren. Es gibt immer jemanden, der sich über dieses oder jenes beschwert und andere nervt, nur weil er so ist ...
quelle
Ich reserviere eine Stunde pro Tag für Peer Reviews, benötige diese aber nicht immer. Unsere Code-Basis teilen sich ein paar Dutzend Produkte. Wir sind der Meinung, dass eine geringfügige Änderung des Codes, die nur für ein Produkt gilt, ohne Überprüfung eingecheckt werden kann. Für komplexere Änderungen an einem Produkt ist eine Überprüfung erforderlich. Dies kann jedoch so informell sein, als würde ein Kollege an Ihren Schreibtisch gerufen, um eine erneute Überprüfung durchzuführen. Änderungen am gemeinsam genutzten Code erfordern eine formellere Überprüfung, einschließlich der Entwickler anderer Produkte. Ich denke, unsere Politik ist im Vergleich zu anderen Unternehmen, für die ich gearbeitet habe, ziemlich ausgewogen.
Ich verbringe mehr Zeit pro Tag mit Überprüfungen als einige meiner Kollegen mit weniger zentralen Rollen, halte dies jedoch nicht für unangemessen viel Zeit, da ich vor der Überprüfungsrichtlinie ohne weiteres mehr Zeit damit verschwenden könnte, die Fehler eines Entwicklers aufzuspüren auf ein anderes Produkt eingeführt.
quelle
Wir haben 100% -Code-Tests durchgeführt. Dies ist weitaus billiger als das Testen, insbesondere das Testen der Codeabdeckung zu 100%. Wir verbringen nicht zu viel Zeit mit ihnen, und das Überprüfen von mehr als einer Stunde pro Tag wird weniger produktiv. (30 Minuten sind nicht viel).
Machen Sie sich während des Vorgangs Notizen. Was hast du gefunden? Was hat QA später gefunden? Was haben Ihre Kunden gefunden? Warum sind dir diese Käfer entkommen?
quelle
Regelmäßige Codeüberprüfungen, hauptsächlich zur Teambildung und zum Austausch von Ideen zur Implementierung. So können Sie viel von Ihren Mitarbeitern lernen.
quelle
Für jeden Check-In benötigen wir eine Peer-Code-Überprüfung. Wenn kein Peer verfügbar ist, veranlassen wir eine Überprüfung nach dem Check-in. Der Prüfer wird im Check-in-Kommentar zur Quellcodeverwaltung vermerkt.
Diese nehmen nicht viel Zeit in Anspruch, und da sie zwischen Gleichaltrigen durchgeführt werden, haben sie keinen toxischen Erwachsenen-Kind-Aspekt.
quelle
Code Review ist, IMO, erforderlich. Sie sind 99.999 ...% der Zeit werden nicht immer richtig sein, deshalb müssen Sie sicherstellen, dass es richtig ist. Habe ich eine festgelegte Zeit? Nein, aber ich nehme mir die Zeit, um meinen Code zu überprüfen. Normalerweise muss ein Kollege dasselbe tun.
quelle
Codeüberprüfungen mögen entmutigend erscheinen, aber sie sind ein wertvolles Werkzeug, wenn sie ordnungsgemäß durchgeführt werden. Sie werden Ihre erste Verteidigungslinie gegen Design- und Implementierungsfehler sein. Wenn Sie nicht für jedes Feature, das Sie implementiert haben, Codeüberprüfungen durchführen, sollten Sie ASAP starten.
Es empfiehlt sich, 5-10% Ihrer geschätzten Gesamtentwicklungszeit für die Durchführung und Beantwortung der Codeüberprüfung zu verwenden.
Wir haben ein Whitepaper zur Durchführung effektiver Codeüberprüfungen, die Ihnen dabei helfen können, den richtigen Weg zu finden. Es ist eine Schritt-für-Schritt-Anleitung, in der häufig auftretende Probleme und deren Behebung erläutert werden. Sie können es von unserer Website herunterladen.
quelle