Was ist der beste Weg, um in einer Codeüberprüfung Kommentare abzugeben?

13

Mein Team hat gerade damit begonnen, Tiegel / Fischauge zu verwenden, um Codeüberprüfungen zu initiieren, wenn einer von uns etwas eincheckt. Wir sind nur zu dritt. Wir sind alle aufgefordert, den Code zu überprüfen und Kommentare zu hinterlassen, wo wir dies für richtig halten.

Meine Frage ist, wie hinterlasse ich am besten einen Kommentar zu einer Codezeile, bei der ich ein Problem sehe? Ich möchte meinen Standpunkt klarstellen, ohne aggressiv zu wirken.

Ich möchte nicht so aussehen, als wäre ich auf einem hohen Pferd und sage: " Ich habe es so gemacht ... und ich möchte auch nicht so aussehen, als würde ich versuchen, autoritär zu sein und so etwas zu sagen " Das sollte so gemacht werden ... " Aber ich muss noch klarstellen, dass das, was sie tun, nicht sehr gut ist.

Zur Verdeutlichung: Dies ist eine wirklich gute Ressource für das, worauf ich achten sollte: Ist eine Codeüberprüfung subjektiv oder objektiv (quantifizierbar)? , Aber ich bin auf der Suche nach , wie ich dazu äußern.

Stinkycheeseman
quelle
2
Außer den Namen FishEye und Crucible (übrigens meine Lieblingswerkzeuge) zu werfen, sehe ich hier nichts, was speziell programmiert werden könnte. Man könnte viel Beratung über Sachen wie das erhalten , indem Web - Suche nach so etwas wie , wie konstruktives Feedback zu geben
gnat
@caleb, da bin ich anderer Meinung, hier geht es mehr darum, wie man die Kommentare formuliert, als in diesem anderen Thread.
HLGEM
1
@HLGEM Ich würde sagen, genau darum geht es in der vorgeschlagenen Dupe: "Wie kann ich taktvoll vorschlagen ...". Im Allgemeinen sollten Sie sich auf die Lösung von Problemen konzentrieren, die im untersuchten Code vorhanden sind, nicht auf den Stil oder Ihre persönlichen Vorlieben. Erklären Sie, wie Ihr Vorschlag den Code verbessert.
Caleb
@ stinkycheeseman lass die anderen wissen, dass es besser ist, wenn du es so machst. und die Leute in Ihrem Team werden durch den Prozess etwas lernen.
Upton

Antworten:

8

Nun, ich neige dazu, Kommentare in verschiedenen allgemeinen Bereichen abzugeben, und jeder Typ wird möglicherweise anders behandelt.

Erforderliche Änderungen Dies sind die Arten von Änderungen, bei denen ich darauf hinweise, dass der Code die funktionalen Anforderungen nicht erfüllt oder nicht funktioniert und vor der Weitergabe an die Produktion behoben werden muss. Ich neige dazu, in diesen Kommentaren sehr direkt zu sein. Die Anforderungen besagen ..., das tut das nicht. Andernfalls schlägt dies fehl, wenn der gesendete Wert null ist (insbesondere, wenn Sie wissen, dass dieser Fall basierend auf den Daten auftritt, die gesendet werden).

Dann gibt es die Kommentare "das funktioniert, aber hier ist ein besserer Weg, dies zu erreichen". Man muss in diesen Dingen vorsichtiger sein und mehr Verkaufsgespräche führen. Ich könnte sagen, dass ich dies stattdessen tun würde, weil es wahrscheinlich eine bessere Leistung bringt (ich überprüfe im Allgemeinen SQL-Code, wo die Leistung sehr wichtig ist). Ich möchte einige Details hinzufügen, warum dies eine bessere Wahl ist, als wenn ich eine Frage zum Stapelüberlauf beantworte. Ich kann darauf hinweisen, dass es nicht erforderlich ist, dies für diesen bestimmten Code zu ändern, sondern die Änderung in der zukünftigen Codierung zu berücksichtigen. Grundsätzlich erziehe ich mit solchen Kommentaren Leute mit weniger Erfahrung darüber, was besser funktionieren könnte.

Dann gibt es die Kommentare "Das funktioniert, aber wir machen die Dinge so". Dies werden wahrscheinlich auch Änderungen erforderlich sein. Dazu gehören Kommentare zu Unternehmensstandards oder der von uns erwarteten Architektur. Ich würde auf das Standard- oder Architekturdokument verweisen und sie auffordern, sich an den Standard zu halten. Der Kommentar wäre unkompliziert aber neutral, er fehlt also und so oder die Variablennamen entsprechen nicht unserem Namensstandard oder ähnlichen Dingen. Beispielsweise erfordert unsere Architektur für SSIS-Pakete, dass das Paket unsere Metadatendatenbank verwendet, um bestimmte Informationen über das Paket zu speichern, und eine bestimmte Protokollierung. Das Paket würde ohne diese Dinge funktionieren, aber sie sind aus betrieblichen Gründen erforderlich (wir müssen zum Beispiel die Erfolgsrate von Importen melden oder die Arten von Fehlern analysieren, die wir erhalten).

Das Einzige, was Sie in Kommentaren zur Codeüberprüfung nicht tun möchten, ist, jemanden persönlich anzugreifen. Es kann auch helfen, wenn Sie etwas finden, das sie gut gemacht haben, und darauf hinweisen, dass es gut war. Manchmal lerne ich etwas Neues aus einer Codeüberprüfung und wenn ich es tat, erzähle ich es der Person.

HLGEM
quelle
1
Zu Absatz 3: Ich habe die Erfahrung gemacht, dass es selten gut genug ist, nur eine bessere Technik zu erklären (es sei denn, dies ist offensichtlich). Oft müssen Sie den Code neu schreiben, bevor sie die Vorteile voll und ganz schätzen und gläubig werden. In einem nur aus Kommentaren bestehenden Überprüfungssystem ist dies schwierig. Möglicherweise müssen Sie Ihren Kommentar mit einem "Kommen Sie zu mir und wir werden darüber diskutieren." um es sich zu lohnen.
mcmcc
@mcmcc, das ist ein fairer Punkt, oder Sie verweisen auf eine andere Stelle im Code, an der eine ähnliche Technik verwendet wird. Normalerweise benutze ich die Kommentare nur, um anschließend eine tatsächliche Diskussion auszulösen, es sei denn, sie sind alle trivial.
HLGEM
6

Wenn der Code Ihren Codierungsstandards entspricht, Sie dies aber auf andere Weise tun, müssen Sie sich fragen, ob das, was sie getan haben, falsch ist.

Wenn es nicht ... ist es einfach nicht so, wie du es getan hättest und du kannst es einfach nicht verlassen. Frag einfach: "Warum hast du es auf diese Weise anstatt auf diese Weise getan?" Dann bringen Sie sie dazu, sich zu qualifizieren, warum sie es so gemacht haben, wie sie es getan haben, ohne zu sagen: "Ich hätte es so gemacht, und Sie sollten es auch ..."

Sie könnten auch etwas dabei lernen.

Tyanna
quelle
4

Ich möchte meinen Standpunkt klarstellen, ohne aggressiv zu wirken.

Verwechseln Sie die Knappheit nicht mit Abrieb. Wenn etwas ein Problem ist, dokumentieren Sie es so, dass jeder, der es beheben will, es verstehen kann. Halte dich an die Fakten und schreibe keinen Aufsatz. Nämlich:

  • Dies führt zu einer Fehlfunktion der Frobnitz, wenn sich der Fooble innerhalb von 5 Grimbles vom Snorgatz-Faktor befindet.

  • Die etablierte Konvention dafür ist, fazzatz () mit einem frisch initialisierten Squidge aufzurufen. Machen Sie daraus eine Methode, damit sie immer auf die gleiche Weise abläuft und nicht dupliziert wird.

    Ich möchte auch nicht so aussehen, als würde ich versuchen, autoritär zu sein und so etwas wie "Das sollte so gemacht werden ..." zu sagen, aber ich muss immer noch klarstellen, dass das, was sie tun, nicht sehr gut ist .

Der Zweck der Überprüfung von Code besteht darin, ein zweites, normalerweise erfahreneres Augenpaar darauf abzustimmen, um Probleme zu erkennen. Wenn Sie in der Lage sind, die Arbeit anderer zu beurteilen und es einen triftigen Grund gibt, zu sagen, dass etwas nicht gut ist, würden Sie Ihre Verantwortung als Prüfer vernachlässigen, wenn Sie dies nicht tun.

Es wird Meinungsverschiedenheiten geben, und dies gibt dem Prüfer und dem Prüfer die Möglichkeit, ihre Positionen zu verteidigen. Wenn Sie andere Kollegen sind und in eine Sackgasse geraten, suchen Sie sich einen Senior, der das Band löst.

Blrfl
quelle
+1 nur für den Snorgatz-Faktor (auch der Rest der Antwort gefiel mir)
HLGEM
3

Es hängt davon ab, welche Art von Problem festgestellt wurde

  • Fehlender Hinweis zum Verfassen von Texten - ein häufiges und langweiliges Problem, nur ein kurzer Kommentar, der das Problem aufzeigt, und weiter
  • Orte, an denen ich es vielleicht anders mache - stellen Sie hier normalerweise eher Fragen als Aussagen, manchmal rechtfertigen die Antworten die ursprüngliche Lösung, andere Male nicht, und dann kann ich diese expliziter ansprechen
  • Stellen, an denen ein klarer Defekt vorliegt, z. B. Equals Override, bei dem ein Stapelüberlauf auftreten kann - greifen Sie nach dem roten Stift - markieren Sie ihn als Defekt und geben Sie genau an, warum er defekt ist.
jk.
quelle
1

Meiner Erfahrung nach:

  1. Haben Sie immer den Autor des Codes bei sich, während Sie seinen Code überprüfen. Der Code wird vorzugsweise auf das Whiteboard projiziert, und Sie beide können den Code sehr gut erkennen.

  2. Habe ein freundliches Gespräch. Schätzen Sie den guten Teil der Codierung. Sagen Sie ihm, "das ist das Beste, was ich je gesehen habe", wenn Sie einige gute Teile im Code sehen.

  3. Bitten Sie ihn, Ihren Code zu überprüfen und die gültigen Punkte zu akzeptieren und zu akzeptieren und ihn zu korrigieren. Respektieren Sie seine Kommentare in Ihrem Code und er respektiert automatisch Ihre Kommentare zur Codeüberprüfung.
  4. Arbeiten Sie auf Entwicklerebene, es sei denn, es ist sehr wichtig oder es wird mehr Zeit benötigt, um die Codeüberprüfungsprobleme zu beheben. Eskalieren Sie nicht einfach zu Managern, wenn Probleme mit der Bedingung fehlen.
  5. Schauen Sie mit der Perspektive "Lernen aus anderem Code", anstatt auf Fehler im Code hinzuweisen.
  6. Zitieren Sie während der Codeüberprüfungssitzungen die Fehler, die Sie in der Vergangenheit gemacht haben, und wie Codeüberprüfungen Ihnen geholfen und große Produktionsprobleme vermieden haben, da Ihnen ein anderer Satz von Augen geholfen hat.
  7. Demütig sein. Mehr Wertschätzung und weniger Kommentare für ihn :) Sie werden viel bei der Codeüberprüfung lernen und er wird auch gerne Ihre Kommentare annehmen.
java_mouse
quelle