Ich suche hier einige Ideen.
Ich habe den Artikel gelesen. Wie sollten Codeüberprüfungen durchgeführt und Codeüberprüfungen durchgeführt werden? Was sind die Vorteile? Das war sehr informativ, aber ich brauche noch mehr Klarheit in der Frage unten.
Meine Frage ist,
Können Sie als Zielentwickler einige Best Practices vorschlagen, die ein Entwickler einbauen kann, bevor sein Code überprüft wird?
Derzeit übe ich die folgenden Methoden
- PPT für einen logischen Ablauf
- Detaillierte Kommentare.
Problem: Obwohl ich die oben genannten Praktiken implementiert habe, helfen sie bei der Überprüfung nicht. Das Problem, mit dem ich konfrontiert war, ist, dass ich, wenn auf bestimmte Logik verwiesen wird, ständig nach der Implementierung und dem Ablauf suche und dabei zu viel Zeit verschwendet werde und die Leute auf die Nerven gehen.
Ich denke, viele Entwickler würden das durchmachen, was ich auch durchmache.
quelle
Antworten:
Basierend auf den von OP bereitgestellten Details klingt die Frage wie folgt: "Wie lerne ich meinen eigenen Code, damit ich schnell antworten kann, wenn ich gefragt werde, ob ich X finden oder Y erklären möchte."
Einige Vorschläge, die mir einfallen:
Beim Codieren müssen Sie sich die Zeit nehmen, um Ihren eigenen Code zu lernen und zu verstehen. Dies könnte das sein, was Ihre TL versucht, Ihnen in weniger Worten zu vermitteln. Als TL für das aktuelle Projekt habe ich in den letzten 11 Monaten viele Codeüberprüfungen durchgeführt, und ich stelle fest, dass einige Entwickler entweder in unserer eigenen Codebasis oder woanders (Google) nach "Beispielcode" suchen , etc ...) und kopiere / füge es ein. Persönlich kann ich es nicht ertragen, weil ihr Code zwar die einfachen Komponententests besteht, sie aber nicht verstehen, was er tatsächlich tut, so dass wir nie garantiert werden, dass es keinen gibt. ' t ein Grenzfall oder eine erwartete Fehlerbedingung, die auftreten könnte.
Wenn Sie kopieren / einfügen müssen, versuchen Sie als Folge der vorherigen Aussage, nur den Code zu kopieren / einzufügen, den Sie zuvor geschrieben haben und den Sie verstehen. Es ist sicherlich in Ordnung, die Idee anderer Leute "auszuleihen", aber in diesem Fall schreiben Sie ihren Code Zeile für Zeile neu, da Sie beim Schreiben ein besseres Verständnis dafür erlangen, was er tut. Wenn Sie externe APIs verwenden, nehmen Sie sich trotzdem ein paar Minuten Zeit, um eine Referenz zu finden und zu erfahren, wie diese API funktioniert, auch wenn Sie ein Beispiel haben, das diese API verwendet. Gehen Sie nicht einfach davon aus, dass es auch in Ihrer Situation funktioniert, wenn es vorher funktioniert hat.
Lesen Sie und lernen Sie, das DRY-Prinzip zu lieben . Oft kann das, was Sie kopieren / einfügen möchten, an einem gemeinsamen Ort abgelegt werden (separate Funktion, separate Klasse, separate Bibliothek ...).
Lesen Sie und lernen Sie, SOLID-Prinzipien zu lieben, und lesen Sie währenddessen KISS, das bereits von mouviciel erwähnt wurde. Diese Prinzipien sind alle darauf ausgerichtet, sehr präzisen, sauberen und modularen Code zu erstellen. Wenn Sie große Klassen und große Funktionen in diesen haben, wird es eindeutig viel schwieriger sein, Dinge zu finden, und versuchen Sie außerdem zu erklären, was der Code tut. Wenn Sie dagegen SRP folgen (oder zumindest versuchen, SRP zu folgen) und jede Klasse / Funktion nur für eine Sache verantwortlich machen, ist Ihr Code klein und gut lesbar.
Holen Sie sich eine Kopie von Clean Code . Sehr gutes Buch. Es geht um das Schreiben von Code, der selbsterklärend und einfach zu lesen, zu warten und zu erweitern ist. Wenn Sie üben, einfach zu lesenden Code zu schreiben, sollten Sie keine Probleme haben, Ihren eigenen Code in den Codeüberprüfungen zu lesen. Und das ist der lustige Teil, ich habe die Leute gebeten, ihren eigenen Code zu lesen oder mir einfach zu sagen, was die Variablen darstellen, und sie konnten nicht antworten, obwohl sie diesen Code (brandneue Klassen, kein Vermächtnis) erst vor einer Woche geschrieben haben . Eine gute Benennung reicht weit.
Wenn Sie nach all der Vereinfachung und Umgestaltung immer noch eine Funktion haben, die einen Algorithmus ausführen muss, der nicht sehr offensichtlich ist, nehmen Sie sich Zeit und schreiben Sie einen Kommentarblock in diese Funktion, der den Algorithmus erklärt. Dies ist nicht nur hilfreich, wenn Sie diese Funktion in zwei Monaten ändern müssen, sondern wenn Sie bei einer Codeüberprüfung überfallen werden, können Sie einfach zurücklesen, was Sie geschrieben haben.
Wenn Sie nach all den oben genannten Punkten immer noch in Schwierigkeiten sind? Sind Sie neu im Team und wurden gebeten, mit viel Legacy-Code zu arbeiten? In diesem Fall könnte es sein, dass Ihre TL ein A $$ ist und Sie proaktiv sein könnten, indem Sie ihn vor dem Meeting bitten, einfach zu sein und nicht die Zeit aller Beteiligten zu verschwenden. Wenn neue Mitarbeiter einem Team beitreten, muss TL genügend Geduld haben, da die Arbeit auf einer neuen Plattform, einem neuen Produkt, neuen Mitarbeitern und einer neuen Umgebung einer neuen Person viel Konzentration abverlangt und dieser Person am Anfang einige Details fehlen. Funktioniert wie geplant und Ihre TL sollte dies einfach akzeptieren.
Wenn Sie nach all den oben genannten Punkten immer noch das Gefühl haben, schreckliche Codeüberprüfungen zu haben. Sprechen Sie mit Ihrer TL. Manchmal fühlen sich Menschen aufgrund der Art der Codeüberprüfungsbesprechungen schlecht, obwohl TL mit Ihnen vollkommen zufrieden ist. Wenn ich Codeüberprüfungen durchführe, ist es mein Ziel, hervorzuheben, was geändert werden muss, sicherzustellen, dass Sie die Änderungen verstehen und fortfahren. Oft habe ich keine Zeit, höflich zu sein, und manche Leute werden defensiv und versuchen, jeden einzelnen meiner Kommentare zu beantworten. In solchen Situationen kommt die Besprechung zur Codeüberprüfung zum Stillstand, sodass ich sie eher unterbreche und weitermache. Im Allgemeinen würde ich nach dem Treffen mit den neuen Leuten sprechen, um sicherzustellen, dass sie den Prozess verstehen und dass es nichts Persönliches ist. Nach wenigen Codeüberprüfungen fühlen sich die Menschen im Allgemeinen viel wohler.
quelle
Praktiken variieren, aber nach meiner Erfahrung:
Machen Sie nichts Besonderes mit dem Code. Es ist natürlich, Ihren Code ein wenig aufzupeppen, wenn Sie erfahren, dass er überprüft wird, und es schadet nicht, offensichtliche Dinge wie Rechtschreibfehler und dergleichen zu beheben. Aber gehen Sie nicht hinein und fügen Sie nicht viele detaillierte Kommentare hinzu oder ändern Sie den Code auf andere Weise, nur weil die Überprüfung geplant ist.
Der Code wird rechtzeitig vor der Überprüfung erstellt und an die Prüfer verteilt. Dies wird normalerweise von einem neutralen Dritten durchgeführt, wahrscheinlich dem Code Review Facilitator. Wenn der Code ausgedruckt wird, sollte er klein genug sein, damit die Zeilen nicht zu oft umbrochen werden, aber groß genug, damit jeder ihn leicht lesen kann. Drucken Sie es im Querformat, wenn dies erforderlich ist.
Der Code sollte gedruckt oder mit Zeilennummern angezeigt werden . Vorzugsweise sollte die Nummer von einer Datei zur nächsten fortgesetzt werden. Es ist so viel einfacher, auf "Zeile 3502" zu verweisen als auf "Zeile 238 von foo.c", und mit den Zahlen kann jeder über bestimmte Zeilen sprechen, ohne Zeit damit zu verschwenden, diese Zeilen zu finden.
Es sollte auf jeden Fall einen Moderator geben , übrigens. Seine oder ihre Aufgabe ist es, zu verhindern, dass die Überprüfung in Kleinigkeiten hängen bleibt, zu verhindern, dass sie persönlich oder erhitzt wird, und die Länge der Überprüfung streng zu begrenzen.
Als Autor sollten Sie den Code vor dem Überprüfungsmeeting selbst überprüfen. Notieren Sie die Änderungen, die Sie vorschlagen würden, wenn dies der Code eines anderen wäre. Dies führt zu einer Erinnerung an Code, den Sie in einigen Tagen möglicherweise nicht mehr gesehen haben, und hilft Ihnen auch dabei, das Betrachten Ihres eigenen Codes mit kritischem Auge zu üben. Nachdem Sie einige Rezensionen sowohl als Rezensent als auch als Autor durchlaufen haben, werden Sie feststellen, dass Ihre eigenen Notizen besser mit denen des Restes der Gruppe übereinstimmen.
Machen Sie sich während der Überprüfung Notizen . Dies sollte nicht Ihr Hauptanliegen sein - jemand anderes sollte die Aktionselemente aufzeichnen, auf die sich die Gruppe einigt, damit Sie sich darauf konzentrieren können, den Code zu erklären und das Feedback anzuhören. Aber es wird Zeiten geben, in denen Sie wertvolles Feedback erhalten, das kein Aktionselement ist, und Sie sollten solche Dinge korrigieren, sobald sie auftreten.
Denken Sie daran, dass es nicht persönlich ist. Es ist schwer zu vermeiden, sich während einer Überprüfung defensiv zu fühlen (und zu handeln). Es ist in Ordnung, Ihren Code zu erklären, wenn Sie glauben, dass er missverstanden wurde, aber vor allem versuchen Sie, nur zuzuhören.
quelle
Eine weitere Sache, die Sie zu den anderen Antworten hinzufügen sollten: Um formelle Codeüberprüfungen zu vereinfachen, führen Sie VIELE informelle Codeüberprüfungen durch ! Zum Beispiel:
"Hey Bob, kann ich dir zeigen, wie ich die Funktion foo () implementiert habe?" "Hey Steve, kannst du dir dieses Klassendiagramm ansehen und mich wissen lassen, was du denkst?" "Hey Karen, kannst du mir helfen, dieses Problem zu durchdenken? Ich glaube, ich habe eine gute Lösung, aber ich könnte deine Hilfe gebrauchen ..."
Machen Sie dies zu einer regelmäßigen Gewohnheit. Wenn Sie Ihre Mitarbeiter frühzeitig in den Entwurfsprozess einbeziehen, haben Sie:
quelle