Was tun, wenn der Entwickler, dessen Code ich überprüfe, defensiv wird?

Ich befinde mich in folgender Situation. Kleines Team in einer großen Einheit mit vielen Teams. Es gibt einen offiziellen Code-Review-Prozess, aber für viele Entwickler ist es eher eine Formalität, so dass es selten ist, ernsthafte Diskussionen oder Reviews zu sehen.

In meinem Team begegnete ich einem Entwickler, der nicht der Routine folgte und sich direkt dem Entwicklungszweig widmete. Ich habe das Thema Code-Reviews aufgeschlagen, dann haben wir angefangen, Pull-Requests zu machen. Meine Pull-Requests wurden automatisch genehmigt. Es war jedoch offensichtlich, dass er sie nicht las, sondern nur auf den Knopf drückte.

Gleichzeitig scheint er es ein bisschen persönlich zu nehmen, wenn ich die Rezensionen mache. Um ehrlich zu sein, mache ich normalerweise ziemlich gründliche Code-Reviews. Ich nehme es ernst. Ich habe Code-Reviews für andere Entwickler in der Firma durchgeführt, für die ich arbeite, es ist nur dieser eine Fall, in dem der Entwickler extrem defensiv zu sein scheint. Das Problem ist, dass wir sehr eng zusammenarbeiten.

Sollte ich aufhören, Code-Reviews zu machen? Wie geht man diese Situation am besten an?

Nur ein frisches Beispiel, um den Punkt zu verstehen. Der Entwickler schreibt eine Klasse, die wie etwas zwischen Factory und Container aussieht, und nennt sie dann SomethingBuilder, wobei der Something-Teil nichts mit dem endgültig erstellten Objekt zu tun hat. Ich kommentiere das natürlich und sagen wir mal, er nimmt es persönlich. Was soll ich hier machen? Es scheint, dass es dem Tech Lead des Teams egal ist. Er verteidigt ihn tatsächlich sehr. Er sagt, jeder hat seinen eigenen Stil. Ich bin mir nicht sicher, was für ein Stil es ist, Factory einen Builder zu nennen, aber egal. Ist hier Vermeidung die beste Strategie, besonders wenn der Tech Lead Mitgefühl mit dem Typen zeigt?

was meinst du mit "ein bisschen persönlich"? Was meinen Sie mit „ziemlich gründlich“ und „ziemlich ernsthaft“, können Sie ein Beispiel dafür geben, was Sie ablehnen oder kommentieren? was bedeutet "sehr nah arbeiten"? physisch? Haben Sie einen Teamleiter im Team, an den Sie dies herantragen können?
Wenn ich gründlich sage, meine ich, dass ich wirklich Zeit damit verbringe, die Probleme im Code zu finden und seine Schwachstellen aufzuzeigen. Ich vermeide es normalerweise, das Wort "Sie" zu verwenden, sondern verweise auf den Code selbst.
Ich meine, ich mache die Reviews nicht nur formell.
Kommentieren Sie nur die Klassennamenskonventionen? Ich kann verstehen, wie das jemanden irritieren würde - einige Entwickler verwenden Klassennamen als Ventil für Kreativität. Ich glaube, ich habe einmal eine Mustervergleichsklasse als "DeviceHarmoniser" bezeichnet. Wenn das schlechteste Beispiel, auf das Sie bei einer Codeüberprüfung kommen können, die Benennung einer Klasse ist, dann denke ich, dass es sicher ist, dies schleifen zu lassen.
@bharal Es ist eigentlich eine sehr verwirrende Klasse. Wenn Sie es lesen, erwarten Sie einen Builder, der ein bestimmtes Objekt erstellt. Dann stellen Sie fest, dass es nicht über die klassische Builder-API verfügt. Dann stellen Sie fest, dass es nicht wirklich baut, was es sagt, und dann erkennen Sie, dass es verdammt viel mehr tut, als es tatsächlich baut. Ich habe 30 Minuten gebraucht, um die Logik zu verstehen, und ich halte mich für einen sehr schnellen Codeleser.
@bharal, also zurück zu deiner Frage. Nein, es ist nicht nur der Klassenname. Es ist der Namensmissbrauch, der etwas zu einem komplexen Durcheinander macht, das Sie kaum lesen und überprüfen können.
@Pesho Hast du es so in der Rezension formuliert oder hast du es sanfter formuliert?
@Dukeling natürlich habe ich diese Formulierung nicht verwendet :) nein, ich habe nur gesagt, dass die Klasse kein Builder ist, dass sie nicht baut, was sie sagt, dass sie baut. Gab ein Beispiel, wie ein Builder aussehen sollte, und ein Beispiel, wie die Klasse meiner Meinung nach implementiert werden sollte. Ich habe dort vielleicht irgendwo erwähnt, dass ich 30 Minuten gebraucht habe, um herauszufinden, was die Klasse tut, aber es war nur, um die Komplexität zu betonen, die sie hinzufügt.
Ich habe auch erwähnt, dass die Klasse gegen das Prinzip der Einzelverantwortung verstößt.
„In meinem Team traf ich auf einen Entwickler, der nicht der Routine folgte und sich direkt dem Entwicklungszweig widmete.“ - Warum darf sich jeder an den Hauptzweig binden?
Gibt es organisatorische Kodierungsstandards, auf die Sie sich beziehen könnten? Der Punkt über Codierungsstile, den Tech Lead macht, ist gültig. Dies ist einer der Gründe, warum sich Menschen auf gemeinsame Codierungsstandards / -praktiken einigen. Abgesehen von schlechter Benennung / Lesbarkeit, was sind andere häufige Fehler, wie sind die PRs dieser Jungs, funktioniert der Code, ist er in Bezug auf die Effizienz nahe / weit vom Optimum entfernt? Könnte eine gute Dokumentation / Kommentare bei schlechter Benennung helfen?
Man könnte daraus schließen, dass Sie hier vor allem nach Bestätigung suchen, im Gegensatz zu objektivem Feedback. Um diesen Gedanken zu verwerfen, zitiere dich vielleicht in deiner Frage selbst. Veröffentlichen Sie die Bewertung wörtlich.
@Pesho "Ich habe nur gesagt, dass die Klasse kein Builder ist ... [und ich habe ein Beispiel dafür gegeben], wie die Klasse meiner Meinung nach implementiert werden sollte." - Es scheint, als hätten Sie sich darauf konzentriert, wie Sie es implementiert hätten, und nicht auf den Namen. Sagen Sie beim nächsten Mal einfach: „Wie wäre es, wenn wir es stattdessen FooFrobber nennen?

Antworten (9)

Ich denke, wenn Ihr Tech-Lead definitiv nicht hinter Ihnen steht, müssen Sie Ihr Verhalten ändern.

Dies ist die traurige Realität des Lebens in einem Unternehmen.

Das Beste, was Sie tun können, ist, Ihren technischen Leiter zu bitten, Ihnen Richtlinien zu geben, wie Ihre Code-Reviews aussehen sollten, und sich an diese Richtlinien zu halten. Wenn der Entwickler dann seinen Rücken zu etwas bekommt, das Sie in einer Überprüfung gesagt haben, können Sie zu Ihrem technischen Leiter gehen und ihn bitten, Sie auf der Grundlage seiner Richtlinien zu unterstützen .

Ich war auf beiden Seiten dieser Gleichung, und obwohl es schwierig ist, genau zu sagen, was passiert, ohne die beteiligten Personen zu kennen oder wie sie die Dinge sehen, klingt es so, als müssten Sie hier etwas taktvoller sein. Wenn ich raten müsste (und es ist nur eine Vermutung), wird Ihr Kollege wahrscheinlich defensiv, weil er sich angegriffen fühlt. Für dich ist es ein unpersönlicher Teil des Jobs, für sie bist du ein Idiot, der sauer auf sie wird, weil sie es nicht so machen, wie du es für richtig hältst.

Allerdings könnte ich hier von der Basis abweichen. Das erste , was Sie tun sollten, ist, mit ihnen darüber zu sprechen. Dieses Gespräch muss nicht super formell sein, aber es sollte privat sein. Lassen Sie sie wissen, dass Sie versuchen, ihnen zu helfen, sich zu verbessern, und dass Ihre Kritik nicht persönlich ist. Konzentrieren Sie sich auch nicht nur auf das Negative. Wenn sie darauf eine Antwort haben, hören Sie ihnen zu und versuchen Sie, ihren Standpunkt zu verstehen. Doch selbst wenn bei diesem Gespräch nichts herauskommt, gibt es Dinge, die Sie tun können.

Verfügt Ihr Unternehmen über formelle Kodex-Standards? Sind diese Standards dokumentiert? Wenn ja, dann ist Ihr Leben gerade viel einfacher geworden. Weisen Sie jedes Mal, wenn Sie etwas sehen, das gegen einen dieser Standards verstößt, höflich darauf hin. Wenn er wütend wird, kannst du sogar sagen: "Hey, ich stimme zu, es ist ein dummer Standard, aber ich mache nicht die Regeln". Du kannst es sogar so aussehen lassen, als ob du ihm den Rücken frei hältst, indem du sagst: „Hey Alter, ich möchte nicht, dass du Ärger bekommst, du solltest das wahrscheinlich ändern, damit es dem Standard entspricht“.

Die andere große Sache, die Sie tun können, ist zu erklären, warum etwas geändert werden sollte. Seien Sie nicht einfach wie "Hey, ändere X zu Y". Erklären Sie ihm, dass X im realistischen Szenario Z Fehler verursacht oder dass Y sauberer ist und den Code leichter wartbar macht. Versuchen Sie erneut, dies so zu formulieren, dass Ihr Kollege das Gefühl hat, dass Sie aktiv versuchen, ihm zu helfen, sich zu verbessern, anstatt ihn nur zu tadeln, weil er die Dinge auf seine Weise und nicht auf Ihre Weise getan hat.

Weisen Sie auf die guten Dinge in ihrem Code sowie auf die schlechten hin. Wenn sie etwas auf intelligente Weise gemacht haben, dann sagen Sie ihnen, dass Ihnen die Art und Weise gefallen hat, wie sie die Sache gemacht haben. Das hilft zu verhindern, dass sie das Gefühl haben, dass du hinter ihnen her bist.

Der Entwickler schreibt eine Klasse, die wie etwas zwischen Factory und Container aussieht, und nennt sie dann SomethingBuilder, wobei der Something-Teil nichts mit dem endgültig erstellten Objekt zu tun hat. Ich kommentiere das natürlich und sagen wir mal, er nimmt es persönlich.

Viel hängt davon ab, wie Sie das kommentiert haben. Vergleichen Sie:

Diese Klasse sieht aus wie etwas zwischen Factory und Container und heißt SomethingBuilder, was nicht wirklich mit dem endgültig erstellten Objekt zusammenhängt.

zu:

Ich frage mich, ob es sich lohnen könnte, dies wie folgt in eine Fabrik und einen Container aufzuteilen:

[.. kleine Menge Pseudocode, um zu demonstrieren, was du meinst ..]

Ich denke, das wird uns [konkreten Vorteil X] verschaffen.

Was denken Sie?

Außerdem scheint es so zu sein, dass Etwas die Absicht nicht wirklich vermittelt, da es eher ein Anderes ist. Vielleicht in Otherthing umbenennen?

Das erste Beispiel, das aus Ihrer Frage paraphrasiert ist, läuft auf kaum mehr hinaus, als sich über Code zu beschweren und zu sagen, dass "Ihr Code scheiße ist". Ich finde es nicht besonders seltsam, solche Kommentare persönlich zu nehmen.

Das zweite Beispiel bietet eine Alternative, formuliert es auch als Vorschlag und bittet um Feedback, anstatt Ihrem Kollegen nur zu sagen, was er tun soll.

Er sagt, jeder hat seinen eigenen Stil. Ich bin mir nicht sicher, was für ein Stil es ist, Factory einen Builder zu nennen, aber egal.

Das klingt einfach abschätzig gegenüber den Ansichten und Konventionen Ihres Kollegen und als ob Sie nicht einmal bereit wären, es ernst zu nehmen. In realen Programmen sind die Dinge oft nicht so ordentlich organisiert; Es mag einen guten Grund geben, es so zu schreiben, wie er es getan hat, aber wenn Ihre Formulierung nicht kommuniziert, dass Sie offen für Alternativen sind, werden Sie dieses Gespräch nicht führen.

Vielleicht schreibt Ihr Kollege nur dummen Code; Ich weiß nicht. Aber ihm zu sagen "du schreibst albernen Code" ist keine sehr effektive Möglichkeit, das zu ändern. Fragen Sie, warum er es so gemacht hat, wie er es getan hat. Hör mal zu. Bieten Sie sinnvolle Alternativen an und erklären Sie, warum Sie es für besser halten. gib ihm Raum, darüber nachzudenken und damit zu experimentieren.

Erwarten Sie nicht, dass er sich ändert, indem er ihm einfach die Wörterbuchdefinitionen von „Fabrik“ oder „Baumeister“ an den Kopf wirft; erklären, wie es die Dinge objektiv verbessern wird. „Eleganter“ wird oft verwendet, ist aber kein sehr gutes Argument. Wenn Sie Schwierigkeiten haben, bessere Argumente als "eleganter" zu finden, dann vielleicht ... ist es nicht so wichtig?

Um ehrlich zu sein, mache ich normalerweise ziemlich gründliche Code-Reviews.

Einige Code-Reviews können "zu gründlich" sein und Dinge kommentieren, die nicht sehr wichtig sind.

Bei meinen eigenen Code-Reviews halte ich immer inne und überlege, bevor ich einen Kommentar hinterlasse: „Wird das die Code-Qualität wirklich objektiv verbessern, oder ist das nur meine persönliche Vorliebe?“ Nicht selten ist es nur meine persönliche Vorliebe; also hab ich es gelassen.

Ich habe gesehen, wie Leute einige sehr geringfügige subjektive Dinge kommentierten. Es ist in Ordnung, einen kleinen Rechtschreibfehler/Tippfehler in einem Kommentar zu kommentieren, da das objektiv falsch ist, aber ich denke, es ist wichtig anzuerkennen, dass Programmieren ein sehr subjektives Handwerk ist und dass Objektivität schwer zu erreichen ist (deshalb sind Programmierer ständig Streit um alles ).

"Eleganter" wird oft verwendet, aber kein sehr gutes Argument. Wenn Sie Schwierigkeiten haben, bessere Argumente als "eleganter" zu finden, dann vielleicht ... ist es nicht so wichtig? .... Ich würde gebe dir mehrere + nur dafür, wenn ich könnte :)

Mir scheint hier, dass Sie nicht sozusagen der hohe Mann auf dem Totempfahl sind. Daher gibt es wirklich nur eine begrenzte Anzahl von Dingen, die Sie tun können, und es scheint, als hätten Sie sie getan:

1) Wenn das Team keinen PR/CR-Prozess durchführt, sollten Sie darauf drängen, ihn einzuführen (Sie haben es getan).

2) Wenn die Leute PRs absegnen, sollten Sie sie auffordern, damit aufzuhören (das haben Sie getan).

3) Du solltest das Vorbild sein und wenn dir jemand eine schlechte PR schickt, solltest du alles kommentieren und erklären, was falsch ist (das hast du getan).

4) Wenn die Leute nicht auf Hochtouren arbeiten, sollten Sie dies dem technischen Leiter mitteilen (Sie haben es getan).

An diesem Punkt liegt es in der Verantwortung des technischen Leiters, die Situation nach Belieben zu handhaben. In diesem Fall kommt die Kultur von oben; Der erfahrenste Entwickler muss dem Rest des Teams entweder erklären, warum der PR-Prozess wichtig ist, oder ihm auferlegen, dass er es richtig machen muss, auch wenn er nicht versteht, warum (optimalerweise ersteres, aber letzteres funktioniert auch). Wenn der technische Leiter jedoch nicht versteht, warum es sich um einen wertvollen Prozess handelt, oder sich nicht die Mühe machen möchte, sicherzustellen, dass er ordnungsgemäß durchgeführt wird, können Sie nicht viel tun.

Was Sie in Zukunft tun sollten, so schmerzt es mich, dies zu sagen, Sie sollten Probleme ansprechen, aber wenn die Leute auf der Empfängerseite des Problems denken, dass es kein Problem ist, dann sollten Sie sie absegnen. Du läufst Gefahr, vom „Verantwortlichen“ zum „Anal-Zurückhaltenden“ zu werden, und willst nicht den Ruf haben, schwer zu bearbeiten zu sein, das ist es nicht wert. Ich würde auch empfehlen, nach einer neuen Stelle zu suchen; Sie wollen nicht mit schlechten Entwicklern zusammenarbeiten, die Sie mit ihnen zu Fall bringen werden. Lassen Sie sie auf ihrem sinkenden Schiff bleiben, und Sie sollten Ihren verantwortungsvollen Ansatz für die Entwicklung eines Unternehmens anwenden, in dem eine solche Fähigkeit geschätzt wird.

Ich würde hier sagen, bleib bei den Waffen. Ihre Codeüberprüfung klingt vernünftig. Wenn Ihr technischer Leiter schlechte Namenskonventionen zulässt, führt dies zu Verwirrung bei Entwicklern, die diese Klasse nicht geschrieben haben. Namenskonventionen sind für viele Dinge nützlich, und Standard-Namenskonventionen sind der richtige Weg.

Hier sind ein paar praktische Ideen zur Lösung dieses Problems.

  1. Versuchen Sie, Code-Review-Kommentare in objektive und subjektive Punkte zu unterteilen. Zu den objektiven Punkten gehören Beobachtungen wie „hier liegt ein potenzieller Fehler vor“ oder „das entspricht nicht den Anforderungen“. Subjektive Kommentare beinhalten "das geht besser" oder "das sollte besser X heißen". Es ist oft hilfreich, den Unterschied in Kommentaren deutlich zu machen: "Meiner Meinung nach ..." / "Erwägen Sie es, es zu versuchen ...". Ich denke, das hilft, die Abwehr zu reduzieren.

  2. Akzeptieren Sie, dass Sie nur dann Verbesserungen vorschlagen können, wenn die Punkte subjektiv sind, es sei denn, Sie befinden sich in einer höheren Position. Sie müssen akzeptieren, dass es im Team einige Stilunterschiede geben wird, egal wie offensichtlich es Ihnen scheint, dass ein Weg vorzuziehen ist.

  3. Wenn die Diskussion hitzig zu sein scheint, ist es oft hilfreich, sich persönlich zu unterhalten und nicht über das PR-Tool, das Sie verwenden. Sie können eine eingehendere Diskussion führen und mit angemessener Körpersprache taktvoller sein. Sie sind vielleicht immer noch anderer Meinung, aber es könnte einfacher sein, den Standpunkt des anderen zu sehen.

  4. Für Dinge wie Namenskonventionen ist es oft nützlich, sich im Team darauf zu einigen, wie Module vom Typ X genannt werden sollen. Ein Slack oder ein anderes internes Kommunikationstool bietet oft eine Umfrageoption für Teammitglieder, um über bevorzugte Namenskonventionen abzustimmen. Sobald Sie eine Teamvereinbarung getroffen haben, können Sie in zukünftigen Codeüberprüfungen darauf hinweisen. Bieten Sie an, eine Wiki-Seite mit den Entscheidungen Ihres Teams einzurichten.

  5. In Bezug auf Fragen auf höherer Ebene, ob PRs durchgenickt werden oder wie Konflikte über PRs gelöst werden können, sind dies gute Themen, die Sie in einer Retrospektive ansprechen können (vorausgesetzt, Ihr Team folgt einem agilen Prozess).

Ihr Kollege scheint den gesamten Überprüfungsprozess zu missbilligen. Ihr technischer Leiter ist skeptisch. Dies sind diese beiden Punkte, die Sie ansprechen sollten, beginnend mit demjenigen, der am meisten über den Prozess zu sagen hat.

Der Tech-Lead

Der technische Leiter ist möglicherweise skeptisch gegenüber Ihrer Art, Bewertungen zu erstellen oder überhaupt mit Bewertungen. Sie müssen herausfinden, warum er Ihren Kollegen verteidigt. Sei offen für Kritik. Vielleicht bist du zu förmlich. Vielleicht scheint die Art und Weise, wie Sie Feedback geben, nicht sanft genug zu sein.

Dann sollten Sie ihm verkaufen, dass Überprüfungen jedoch notwendig sind, um die Codequalität und das Teamniveau sicherzustellen. Schlagen Sie vor, dass das Team in Zukunft wachsen könnte und diese Probleme angegangen werden müssen, wenn es weniger schmerzhaft ist.

Seine feste Zustimmung ist der Schlüssel zum Erfolg von Bewertungen. Wenn er nicht einverstanden ist, können Sie den Überprüfungsprozess einfach aufgeben, aber das bedeutet nicht, dass Sie kein Problem mit dem Kollegen haben.

Der Kollege

Entwickler im Allgemeinen (ich definitiv eingeschlossen) neigen dazu, viel Ego in ihre Arbeit zu stecken. Das Problem mit Rezensionen ist nicht neu, manche Leute nehmen es persönlich als Kritik an ihrer Arbeit. Dies ist von entscheidender Bedeutung, da Entwickler teuer und eine gute Moral wichtig sind.

Aus diesem Grund sollten Sie unabhängig davon, ob Ihr technischer Leiter Bewertungen genehmigt, die Tatsache betonen, dass Sie trotz harter Überprüfungen der Meinung sind, dass er gute Arbeit leistet, und er sollte sich nicht unsicher fühlen. Überprüfen Sie, ob er nicht auch in Eile programmiert, erinnern Sie ihn gegebenenfalls daran, dass Sie Qualität statt Quantität bevorzugen.

Ich bin mir nicht sicher, ob es hier viel zu tun gibt. Wenn das ungeheuerlichste Beispiel, das Sie haben, die Benennung einer Klasse ist – und es ist nicht einmal so schlecht benannt, ich bin mir ehrlich gesagt nicht sicher, was der Unterschied zwischen „Erbauer“ und „Fabrik“ ist – dann sollten Sie vielleicht noch einmal überdenken, was Sie ' erneute Überprüfung in einer Codeüberprüfung.

Sehen Sie, eine Überprüfung muss nicht immer ein Problem haben . Wenn der Entwickler den Team-Namenskonventionen entspricht, was auch immer sie sind, dann müssen Sie die Namen nicht kommentieren.

Wenn Sie beispielsweise ein Speicherleck oder einen seltsam ineffektiven Code feststellen, dann ja, beachten Sie das. Aber tappen Sie nicht in die Falle „wenn ich gebeten werde, etwas zu kommentieren, muss ich es auf irgendeine Weise kommentieren“. Du nicht. Sie sind in der Industrie, 75 % sind eine lobenswerte Anstrengung, verdammt, 35 % sind meistens bestanden.

Solange die Dinge funktionieren und keine Fehlfunktionen haben und es rechtzeitig fertig ist, na, was will man mehr? Sie werden nicht durch schöne Codezeilen bezahlt, Sie werden überhaupt nicht durch Codezeilen bezahlt - Sie werden durch praktische Ergebnisse bezahlt .

Es hört sich so an, als würden Sie dem Team viel Arbeit hinzufügen, seien Sie vorsichtig. Betrachten Sie es mal so: Wenn Sie ein Unternehmen leiten würden, würden Sie dann schönen Code wollen, der nichts bewirkt, oder Müllcode, der sich kaum skalieren lässt – aber Sie könnten ihn verkaufen?

Wenn Sie denken, dass es jemanden gibt, der ein Unternehmen führt und das erste will, haben Sie vielleicht Recht - aber sie führen dieses Unternehmen nicht sehr lange.

Eine Diskussion über die Namensgebung

Namenskonventionen sind dumm. Wörter ändern im Laufe der Zeit ihre Bedeutung, und der Versuch, den Namen mit der Funktion zu zementieren, ist sinnlos, wenn die Funktion genau da ist und gelesen werden kann .

Jeder kann den Code lesen, um zu verstehen, was er tut. Aber jeder wird eine andere Vorstellung davon haben, was Wörter bedeuten - daher ist es eine kaputte Prämisse, darauf zu bestehen, dass die Wörter der Bedeutung für Ihr Verständnis der Wörter entsprechen , es sei denn, Sie sind die einzige Person, die jemals den Code lesen wird, was Sie nicht sind.

Schlimmer noch, Sie möchten, dass die Namen mit dem Innenleben übereinstimmen , wenn Namen eigentlich eines von zwei (oder besser beides) tun sollten:

  1. Beschreiben Sie die Ausgabe
  2. Beschreiben Sie die darin enthaltene Geschäftslogik

Das Innenleben zu beschreiben ist meistens sinnlos, denn auch hier kann der Code gelesen werden. Die Erfassung der Geschäftslogik ist viel, viel wichtiger. Zu Pfingsten:

saveDataInAthreadSafeAndDataConsistentManner(){...}

ist nicht sinnvoll. Aber

saveAddressDetailsAsTheresAConcurrentProblemWhenSavedWithEverythingElse()

Nun, das ist ein nützlicher Methodenname.

Aber am Ende des Tages, funktionierender Code >> gut benannter Code, der nicht funktioniert, und schnell produzierter funktionierender Code >> langsam produzierter gut benannter funktionierender Code.

Ein weiterer Gedanke

Sehen Sie niemals so aus, als wären Sie die Person im Team, die Standards durchsetzt, die das Team ausbremsen – das sieht nicht gut aus. Wenn Ihr Teamleiter Ihnen zustimmt, können Sie dies weiterverfolgen, aber die TL tut dies nicht. Jetzt sieht es also so aus, als würden Sie sich nur um Namenskonventionen kümmern. Ich würde das nicht tun.

Was sagst du jetzt? Dass Sie nicht wissen, was der Unterschied zwischen Builder-Muster und Factory-Muster ist? Oder dass es Ihrer Meinung nach keine große Sache ist, ein Factory-Pattern als Builder-Pattern zu bezeichnen? Eigentlich ist es nicht einmal eine Fabrik, die ich ihr als am nächsten kommend gegeben habe, aber das ist eine andere Sache. Ist es im gleichen Zusammenhang in Ordnung, wenn ich die Toilette nenne, die pissuare sein soll, und die Pisuare, die Toilette sein soll? Es wäre interessant, wenn jemand blind ist, was er tun wird.
@Pesho Ich wahrscheinlich nicht. Für mich machen beide etwas, der zugrunde liegende Unterschied ist nur , wie sie dieses Ding machen. Aber es wäre mir egal, wie das Ding hergestellt wird, wenn ich ein Konsument davon wäre, würde ich es einfach gerne benutzen. Die Durchsetzung der Namenskonventionen wie Sie sind bedeutet, dass Sie möchten, dass der Name eindeutig mit dem wie übereinstimmt . Seufz, ich werde meine Antwort erweitern ...
Ich möchte, dass der Name mindestens mit "What" übereinstimmt. Es baut nicht, was es sagt, dass es baut.
Ich stimme dem zu, was Sie in der "Diskussion zur Namensgebung" geschrieben haben. Und ich wiederhole noch einmal, die Klasse tut nicht, was sie sagt. Wenn wir den Builder-Teil beiseite legen, sagt er, dass er ein Objekt baut, während er in Wirklichkeit ein anderes baut.
@Pesho, das ist ein anderes Problem - ich denke, Sie sollten das Problem "Baumeister gegen Fabrik" fallen lassen und Ihren TL erneut nach dem "etwas" -Bit fragen. Aber wenn dein TL dagegen ist, dann lass es schleifen. Es wird Ihnen keine Punkte oder eine Beförderung einbringen.
Ich zitiere Sie nur aus meiner Frage. Vielleicht haben Sie es beim Lesen übersehen oder ich habe es nicht explizit genug gesagt: "Der Entwickler schreibt eine Klasse, die wie etwas aussieht, zwischen Factory und Container, und nennt sie dann SomethingBuilder, wobei der Something-Teil nichts mit dem endgültig gebauten Objekt zu tun hat."
Der "Etwas"-Teil in meinem Zitat. Ich weise Sie darauf hin. Ich habe es bereits in meiner ursprünglichen Frage gesagt, Sie haben es vielleicht verpasst.
@Pesho ja genau. Fragen Sie einfach den TL nach dem "etwas" -Bit und ob das vielleicht korrigiert werden sollte. Aber lassen Sie das Bit "factory v builder" weg.
Ich denke, wir verfangen uns zu sehr in der Sache „sind Namenskonventionen wichtig“. Ich denke, es ist wichtiger, sich mit Gummistempeländerungen (die das OP als richtig wahrnimmt oder nicht als Unternehmenskultur wahrnimmt) als mit der tatsächlichen Codeüberprüfung (die das OP möglicherweise korrekt durchführt oder nicht) zu befassen.
"Namenskonventionen sind dumm". Wenn Sie in der MacOS / iOS-Entwicklung sind, ist die Benennung wirklich, wirklich wichtig. Die Leute erwarten, einen Namen zu lesen und daraus eine Menge richtiger Informationen zu erhalten. Wenn Sie schlechte Namen verwenden, werden die Leute sehr unglücklich. Wenn Sie etwas verbessern, das ich genannt habe, freue ich mich.
@ gnasher729 sicher, aber wer setzt dann die Namenskonventionen durch? Ist es Teil des Vorstellungsgesprächs? Woher weiß ich, ob meine Namenskonvention Ihren Erwartungen entspricht? Ich sage nicht, dass Worte unwichtig sind oder die Übermittlung von Informationen unwichtig ist, aber dass "Konventionen" schwer durchzusetzen und sinnlos sind, wenn nicht alle mit an Bord sind - was im Fall des OP-Teams der Fall zu sein scheint , äh, Fall.
Wenn Sie eine Namenskonvention wünschen, sollte diese klar und einfach sein, und Sie sollten ihnen in einem Styleguide zustimmen. Beginnen Sie beispielsweise Klassennamen mit einem Großbuchstaben und jedes vorangehende Wort mit einem Großbuchstaben. Bevorzugen Sie Nominalphrasen für Klassennamen. ZB "Adressdetails". Beginnen Sie Methodennamen mit einem Kleinbuchstaben und beginnen Sie jedes nachfolgende Wort mit einem Großbuchstaben. Bevorzugen Sie Verbausdrücke für Methodennamen. ZB "saveAddressDetails()". Usw.

Traurig zu sagen, aber Sie haben das Gefühl, dass Sie dieses Team verlassen müssen, vielleicht diese Firma. Sie passen nicht gut in die Kultur. Sowohl Ihr Teamleiter als auch derjenige, der Ihren Teamleiter befördert hat, haben sich entschieden, ein bestimmtes Verhaltensmuster zu belohnen. Die Wahrscheinlichkeit, dass sowohl diese Menschen gehen als auch die gesamte Kultur sich verändert, ist sehr gering.

Anstatt Sie für Ihre Fürsorge zu belohnen, hat Ihr Teamleiter Ihre Versuche, die Arbeitsqualität in Ihrem Team zu verbessern, respektlos und abschätzig behandelt. Dies versetzt Sie in eine politisch schwache Position und ist leicht dafür verantwortlich, dass Sie die Dinge verlangsamen, obwohl der Code tatsächlich „einmal geschrieben und viele Male gelesen“ ist, einfach zu lesen, zu verstehen und zu warten, einen schnelleren Weg zu einem fehlerfreien Produkt bedeutet. Nach Ihrer eigenen Beschreibung hat Sie der Codestil Ihres Kollegen um 30 Minuten verlangsamt, um genau herauszufinden, was nur eine Klasse getan hat. Sicherlich hätte eine solche Beschreibung Teil des Klassennamens sein sollen.

Darüber hinaus hat Ihre Managementkette grundlegende Mathematik und grundlegende Psychologie ignoriert.

Für die Mathematik, wenn ein Modul eine 99-prozentige Chance auf keinen Fehler hat (d. h. nicht genügend Komponententests verwendet), dann können Sie (1-p) ^ n berechnen, dass 100 Module zusammen eine Chance von 37 % auf fehlerfreies Verhalten haben . Die Wahrscheinlichkeiten gehen sehr schnell gegen dich. Eine Verbesserung der „Qualität“ auf 99,5 % verbessert das System auf knapp über 60 %.

Für die Psychologie, wer will schon für oder mit Menschen arbeiten, denen es egal ist?

Das ist voreilige Schlüsse. Als ich in mein jetziges Unternehmen kam, herrschte in vielen Teams eine Art „commit to master“-Mentalität. Es hat einige Mühe und Trail and Error gekostet, den richtigen Weg für Code-Reviews zu finden (die Leute mussten sich daran gewöhnen), aber wir haben es geschafft, und ich arbeite immer noch dort, über zwei Jahre später. Insbesondere ist mir überhaupt nicht klar, ob die Leute gegen Code-Reviews als solche protestieren oder ob die Probleme im Ton / Stil des OP liegen, das die Reviews durchführt. Ich vermute, dass zumindest ein Teil des Problems in letzterem liegen könnte.
Ich denke, dass es etwas extrem ist, jemandem zu raten, ein Unternehmen zu verlassen, weil sein Code-Review-Stil leicht kollidiert.
Dies ist aus meiner eigenen Erfahrung, Herzblut einsetzen, um die Dinge überschaubar zu machen. Natürlich ist es Technik, nicht Mathematik, es gibt keinen Wert darauf, perfekt zu sein. Wir haben die Verwendung von Globals als Kommunikation zwischen Threads abgeschafft, verwenden stattdessen Message Passing und eine Zustandsmaschine am Anfang jedes Threads. Dauerte 2 Monate, reduzierte die Stützlast um 75 %. Keine Renngefahren. Aber der Teamleiter wollte den Ruf als jemand, der „immer geliefert hat“. Globals tauchte wieder auf, wenige Unit-Tests, jeder konnte jede gewünschte Änderung einchecken. Unternehmen bankrott 3 Jahre später mit Ruf für Code mit seltsamem Verhalten, unmöglich zu reproduzieren/debuggen.