Ist es gut, Programme mit Senioren und Vorgesetzten zu besprechen, auch wenn es gut funktioniert?

18

In meinem Unternehmen bittet mein Vorgesetzter meine Vorgesetzten, vor Abgabe eines Projekts die von mir oder anderen Teammitgliedern verfassten Programme zu überprüfen, oder manchmal sitzt auch unser Vorgesetzter zur Überprüfung bei uns.

Ich denke, es ist ein guter Weg, um Wissen zu erlangen, aber manchmal, wenn Programme gut funktionieren, funktionieren sie nach der Überprüfung nicht mehr gleich, und ich muss mein Programm erneut untersuchen.

Sie sagen, dass die Überprüfung zur Optimierung der Programm- und Abfrageausführung beiträgt, aber können wir die Optimierung der tatsächlichen Funktionsweise des Programms vorziehen?

Himanshu
quelle
6
wie kann man sicher sein , ob es in Ordnung , ohne Überprüfung durch jemand arbeitet, der nicht die Idiosynkrasien kennt Sie gewohnt sind , wenn Sie Ihre eigenen Tests zu tun
Ratsche Freak
weil sie den Code nach dem vollständigen Testen des Moduls durch das Testteam überprüfen.
Himanshu
15
@Himanshu: Bewertung nach dem Testen ist definitiv zu spät . Die laufenden Arbeiten sollten überprüft werden.
Jan Hudec
3
Umfassen Sie diese Praxis. Ich wünschte verzweifelt, wir würden dies in meinen Teams tun. Es hilft, Wissenssilos zu beseitigen (ein großes Problem für uns) und stellt sicher, dass Ihre Teamkollegen mit Ihrem Code arbeiten können. Wenn Ihre Bewertungen bedeuten, dass Ihr Code manchmal umgeschrieben wird, ist das eine gute Sache. Sogar gute Programmierer schreiben manchmal schlechten Code. Einige von uns würden gerne mehr Zeit haben, um wieder aufzuräumen. Dies sollte eine Chance sein, eine großartige Lernerfahrung mit Menschen zu machen, die erfahrener sind als Sie. Nehmen Sie es nicht als Leute, die Ihren Code angreifen. Nehmen Sie es als Menschen, die versuchen, Sie zu einem erfahrenen Programmierer zu machen.
jpmc26
1
Wenn es üblich ist, dass Code, der "gut funktioniert", während der Codeüberprüfung in Stücke gerissen wird, so dass die Teammitglieder das Gefühl haben, dass viel Schwung verloren geht, sollten Sie vielleicht eine Paarprogrammierung in Betracht ziehen, damit der Code während der Überprüfung überprüft wird geschrieben.
Buhb

Antworten:

38

"Gut funktionieren" ist in der Tat eine großartige Messgröße, aber wenn Sie der einzige im Team sind, der in der Lage ist, zu entschlüsseln, was Sie geschrieben haben, und es auf diese Weise beizubehalten, ist der Code mittel- oder langfristig für das Unternehmen nahezu wertlos.

Ein guter Code ist mindestens:

  • wie vorgesehen arbeiten
  • lesbar / klar
  • leicht zu warten
  • leicht erweiterbar für zukünftige Änderungen
  • sicher
  • ohne unnötige Abhängigkeiten
  • Umgang mit nicht nominellen Fällen
  • etc

(Einige dieser Anforderungen überschneiden sich tatsächlich, sollten jedoch einzeln betrachtet werden ...)

Codeüberprüfungen dienen dem Zweck, der über den "funktionierenden" Teil hinausgeht, der durch automatische Tests durchgeführt werden kann.

Ich persönlich weiß, dass es ärgerlich ist, wenn etwas funktioniert und von Grund auf neu aufgebaut werden muss. Dies ist jedoch häufig auf eine falsche Kommunikation zwischen dem leitenden Angestellten und dem technischen Leiter zurückzuführen. Wenn Sie also der Meinung sind, dass Sie das nächste Mal zu oft umschreiben müssen, gehen Sie zum Prüfer, bevor Sie eine einzelne Zeile schreiben, und versuchen Sie, so viele Informationen wie möglich zu erhalten, die genau wie möglich auf das zutreffen, was er erwartet. Es könnte auch großartig sein, wenn das Team der Code-Reviewer ihre Erwartungen in einem formellen Dokument zusammenfasst, auf das sich jeder Entwickler beziehen kann.

Positiver ist, dass eine Sitzung auch eine Gelegenheit sein kann, großartige Praktiken / Entwürfe auszutauschen.

Xavier T.
quelle
1
Ich würde hinzufügen, dass das Testen des Codes nicht bedeutet, dass es keinen Fehler gibt. Begrenzen Sie Fälle, in denen die Software zum Beispiel abstürzen würde.
Farbstoffe
3
Ich bin damit einverstanden, und die automatischen Tests sollten auch durch den Code überprüft werden, um sicherzustellen, dass sie das Richtige testen ... Turtles ganz unten.
Xavier T.
12

Ich habe Ihre Frage folgendermaßen interpretiert: "Kann mein Funktionscode in einer Überprüfung bis zu einem Punkt abgeschlachtet werden, an dem er nicht mehr kompiliert werden kann?" .

Ja, kann es. Im Allgemeinen sehen Sie während einer Überprüfung, wie Ihr Code funktioniert, was er tut. Wenn Sie Ihren Code einreichen möchten, sagen Sie, dass Sie einen bestimmten Teil des Programms beendet haben.

Sie sagen, dass es funktioniert. Anschließend werden Tests durchgeführt, um dies zu überprüfen. Ein Modul, das Tests besteht, bedeutet nicht, dass das Modul nicht erneut berührt werden sollte.

Ein funktionstüchtig erscheinendes Modul kann immer noch eine Katastrophe sein, die entweder zur Laufzeit oder in einigen Monaten, in denen Sie oder eine andere Person Wartungsarbeiten daran durchführen müssen, abwartet. Indem Sie Ihren Code in einer Überprüfung ändern und darauf hinweisen, was daran falsch war, versucht Ihr Prüfer (hoffentlich), Ihnen tatsächlich etwas beizubringen.

CodeCaster
quelle
3

Peer Reviews sind zweifelsohne eine großartige Lernmethode. Jemand kann etwas anderes sehen, er hat andere Erfahrungen als Sie und sollte in der Lage sein, Verbesserungen beizutragen. Dies sollte nicht abfällig sein. Ich würde erwarten, dass jeder Entwickler in der Lage ist, jeden Code zu kommentieren und konstruktiv zu kritisieren!

Es hört sich für mich so an, als ob einige dieser "Verbesserungen" tatsächlich wichtige Änderungen bewirken, da der überprüfende Entwickler (wie zu erwarten) weniger Erfahrung mit der Software hat als der Autor.

Bei diesem Trend handelt es sich um Selbstfeedback. Vielleicht ist es schwierig, Ihrem Code zu folgen oder ihn zu pflegen. Sind Ihre Bewertungen wertvoll? Absolut! Ich kann sehen, wie frustrierend es sein kann, Arbeitscode zu haben, den Ihre Kollegen dann zu brechen scheinen. Sie sollten nicht entmutigt sein - Sie sollten daran arbeiten, Ihren Code vor diesen Änderungen zu schützen.

Die Frage lautet dann, wie Sie die Funktionalität Ihrer Programme schützen können, damit Sie wissen, dass die Funktionalität auch nach Abschluss Ihrer Überprüfungen noch funktioniert. Mein Vorschlag wäre, sicherzustellen, dass Sie eine angemessene Abdeckung durch Komponententests haben. Auf diese Weise können Sie / Ihr Prüfer / Ihr Nachfolger bei jeder Änderung des Codes sicher sein, dass die vorgenommenen Änderungen sicher sind.

ETA: Ich habe gerade einen Ihrer Kommentare entdeckt, ich bin mir sicher, dass dies selbstverständlich ist, aber Codeüberprüfungen sollten durchgeführt werden, bevor das Testteam sie in die Hände bekommt. Andernfalls testen sie das Endprodukt nicht.

Liath
quelle
1
Integrationstests sind auch äußerst nützlich, um Brüche zu erkennen.
jpmc26