Ich bin ein erfahrener Entwickler, habe aber noch nicht viele Codeüberprüfungen durchgeführt. Ich werde gebeten, in Python geschriebenen Code zu überprüfen, aber ich kenne Python nicht.
Ist es überhaupt sinnvoll, Code in einer Sprache zu überprüfen, die ich nicht kenne?
code-reviews
Heather Smith
quelle
quelle
Antworten:
Irgendein Sinn? Ja. Auch wenn Sie nichts über die Semantik einer Programmiersprache wissen , können Sie dennoch Zeichen lesen und inkonsistente Formatierungen, fehlende Kommentare, falsch gewählte Bezeichner, offensichtliche Duplikate usw. feststellen.
Viel Sinn oder genug Sinn, um die Kosten Ihrer Zeit zu erstatten ? Ich bin mir nicht sicher. Dies hängt von Ihrer Position, der Bedeutung von Code-Überprüfungen im Workflow Ihres Teams und mehreren anderen Faktoren ab, die wir nicht gut genug quantifizieren können.
quelle
enumerate
der Fall.) Ich denke, Ihr Kommentar ist ein gutes Beispiel dafür, warum der Versuch, eine Sprache zu überprüfen, die Sie nicht kennen, höchstens für sich selbst lehrreich sein sollte.Als regelmäßiger Mitarbeiter bei Code Review Stack Exchange stoße ich auf viele Fragen, die sprachunabhängig sind, zum Beispiel:
und die Liste geht weiter. Obwohl ich die Sprache nicht kennen muss, kann ich diese Probleme / Punkte dennoch überprüfen.
Einige unserer Top-User haben Top-Antworten in Sprachen, die sie entweder nicht aktiv verwenden oder nicht kennen. Sogar zwei meiner Top Ten sind in Sprachen, die ich weder kenne noch auf meinem Computer kompilieren / ausführen kann.
Ich würde sogar sagen, dass es das Gleiche ist, als würde man den Pseudocode von jemandem überprüfen. Solange Sie Dinge beobachten und kommentieren können, die für Dinge relevant sind, die Sie verstehen, geht es Ihnen gut, und es ist relevant.
quelle
Allgemeine Hinweise
Hier ist das Fazit meiner Meinung nach:
Python-spezifische Überlegungen und Beispiele
Für die spezielle Situation, Python nicht zu kennen, wäre ich besonders vorsichtig. In Python gibt es viele Redewendungen und Standardmethoden, die dazu führen, dass gutes Python ganz anders aussieht als in anderen Sprachen. (In der Tat denke ich, dass die Dinge, die Python hervorhebt, dazu geführt haben, dass mein Code in anderen Sprachen besser aussieht , und nicht umgekehrt.) PEP8 bietet darüber hinaus ein gutes Beispiel dafür, wie Sie die Denkweise, die Python ermutigt, möglicherweise völlig verfehlen.
Schauen wir uns ein einfaches Beispiel an. Nimm diesen Code:
Sehen Sie das Problem mit diesem Code? Wenn Sie nicht mit Python gearbeitet haben, werden Sie es wahrscheinlich nicht tun. Das Problem ist , dass es ein viel bevorzugter Stil in Python , das tut genau das Gleiche:
Dies ist ein Kontextmanager. Weißt du, wozu sie gut sind? Wissen Sie, wann es angebracht wäre, einen zu verwenden? Wissen Sie, wann es angebracht wäre, eine eigene zu erstellen? Nein? Dann sind Sie wahrscheinlich noch nicht bereit, Python zu überprüfen.
Schauen wir uns ein anderes Beispiel an.
Sehen Sie das Problem? Das Problem ist, dass diese Methode völlig unnötig ist . Sie sollten wahrscheinlich nur ein Verständnis verwenden, wenn die Bedienung so einfach ist:
Wenn Sie das nicht gesehen haben, sind Sie mit den Funktionen und Redewendungen von Python nicht vertraut.
quelle
Möglicherweise haben sie Sie gebeten, den Python-Code genau zu überprüfen , weil Sie Python nicht kennen . Es gibt eine Management-Theorie, dass es nützlich ist, einen "Narren" in einem Team zu haben. Ich nenne dich nicht schlecht :) Die Idee ist, dass ein Team unter Gruppendenken leiden und Tunnelblick entwickeln kann. Eine Möglichkeit, dies zu umgehen, besteht darin, jemanden in das Team aufzunehmen, den die anderen Teammitglieder als "Narren" betrachten würden, dh jemanden, der das Thema nicht kennt. Sie werden Fragen stellen, um sich zu informieren, und die Fragen werden aus einer Sicht kommen, die die anderen Teammitglieder wahrscheinlich nie in Betracht gezogen haben.
Sie kennen Python nicht. Was den Python-Codierern also gewöhnlich erscheint, erscheint Ihnen vielleicht seltsam. Sie könnten eine Verbesserung vorschlagen, die das Team nie in Betracht gezogen hat.
quelle
Bei der Codeüberprüfung geht es nicht darum, nach Variablen mit ungültiger Schreibweise und falscher Formatierung zu suchen. Wenn Sie solche Dinge mithilfe der Codeüberprüfung finden, verschwenden Sie keine Zeit mehr und verwenden Sie ein Tool.
Bei der Codeüberprüfung geht es darum, das Design zu verbessern und häufige Fehler von unerfahrenen Programmierern zu erkennen.
Da ich in C ++ programmiere und Python nicht gut genug kenne, würde ich es nicht wagen, Python-Code zu überprüfen. Allerdings könnte ich bei einer Java-Codeüberprüfung helfen.
Sie haben nicht gesagt, in welcher Sprache Sie programmieren, aber ich sehe nicht, was Sie in einer Codeüberprüfung beitragen könnten, wenn Sie die Sprache, in der es programmiert ist, nicht kennen.
quelle
Codeüberprüfungen (zusätzlich zur tatsächlichen Suche nach Fehlern) sind eine gute Einführung von einem Teammitglied zu anderen für den Code, der hinzugefügt oder geändert wird. Wenn Sie ein erfahrener Entwickler sind , sollten Sie in der Lage sein, genug durchzulesen, um größtenteils zu verstehen, was vor sich geht.
Betrachten Sie eine Codeüberprüfung aus Sicht eines Teamleiters: Es gibt jemanden, der versteht, was die Anwendung tun soll (Geschäftslogik), es gibt jemanden, der versteht, was der Code tut (Implementierungslogik), und möglicherweise mehrere andere Personen Es gibt Leute, die eine Vorstellung davon haben müssen, wie das alles zusammenpasst.
quelle
Sie sollten definitiv nicht der einzige Rezensent sein, aber es gibt viele gute Gründe für Sie, einer der Rezensenten zu sein. Keine Sprachkenntnisse sind für viele Fragen, die in einer Codeüberprüfung beantwortet werden müssen, kein großes Hindernis. Zum Beispiel bin ich einer der Top-20-Antwortenden im C # -Tag auf dieser Site, und ich habe nicht einmal Hallo Welt in C # kompiliert.
Einige Fachkenntnisse, die Sie teilen können, ohne die Sprache zu kennen:
Dies ist auch eine gute Möglichkeit, sich über ein neues Produkt zu informieren. Ich bin gerade einem neuen Team beigetreten, in dem ich die verwendeten Sprachen recht gut kenne, aber die Domäne nicht kenne. Die Teilnahme an Code-Reviews hat mir geholfen, die Domain-Seite besser kennenzulernen, obwohl ich bisher noch nicht viel dazu beitragen konnte.
In Ihrem Fall ist es eine gute Möglichkeit, die Redewendungen einer neuen Sprache zu lernen, wenn Sie die Kommentare sehen, die andere Rezensenten hinterlassen. Dies sind Dinge, die auf andere Weise nur sehr schwer zu lernen sind, da es Ihrem Interpreter egal ist, ob Ihr Code pythonisch ist oder nicht.
quelle
Dies könnte eine Win-Win-Situation sein. Ich würde sogar sagen, dass Sie ein besonders wertvoller Rezensent sein könnten, weil Sie eine Python-Jungfrau sind, die nicht vom Fluch des Wissens befallen wurde .
Stellen Sie sich das so vor: Wenn Code klar genug ist, dass selbst eine Python-Jungfrau ihn verstehen kann, muss es sich um guten Code handeln. Die Teile, die Sie nicht verstehen können, sind möglicherweise Kandidaten für Überarbeitungen oder bessere Kommentare.
Natürlich wäre es auch für Sie von Vorteil, wenn Sie sich im Laufe der Zeit eine neue Sprache aneignen würden. (Hoffentlich ist der Code, den Sie erhalten, ein gutes Beispiel, um daraus zu lernen.) Diese Anordnung sollte besonders gut für Python funktionieren, eine Sprache, die den Ruf eines "ausführbaren Pseudocodes" hat. Wenn Sie ein erfahrener Entwickler sind, sollten Sie keine großen Schwierigkeiten haben, den Kern eines Python-Programms zu verstehen.
Die Einschränkung wäre, dass man nicht erwarten würde, dass man Fehler entdeckt, die aus sprachspezifischen Fallstricken resultieren . Die Fehlersuche ist jedoch nicht der einzige Zweck der Codeüberprüfung. Wenn nichts anderes, würden Sie am Wissenstransfer teilnehmen, indem Sie einfach wissen, was im Code Ihres Kollegen vor sich geht.
quelle
Ich wurde einmal gebeten, ein Projekt zu prüfen, das von einem Subunternehmer durchgeführt wurde und anscheinend schwerwiegende Leistungsprobleme hatte. Ich stellte ziemlich schnell fest, dass der entscheidende Faktor ein einzelnes Perl-Modul war. Ich war noch nie zuvor auf Perl gestoßen und es gab niemanden in der Organisation, der das wusste. Also machte ich mich daran, es selbst zu verstehen. Ich bin nie soweit gekommen, die Details zu verstehen, aber es war sehr klar, dass der verwendete Algorithmus eine quadratische Datengröße hatte und dies die Ursache aller Probleme war. Ja, das Lesen von Code in einer Sprache, die Sie nicht vollständig verstehen, kann auf jeden Fall produktiv sein. Der Bonus ist, dass Sie neue Tricks lernen, während Sie dabei sind.
quelle
Einige Beobachtungen:
1) Wenn Sie ein erfahrener Entwickler sind, lernen Sie Python (oder mindestens so viel, wie Sie wissen müssen) kennen, indem Sie einfach damit arbeiten. Es wird ein Fall von "Learning by Doing" sein. Anfangs wird es schwierig, aber mit dem Erlernen der Sprache wird es einfacher. Betrachten Sie dies als eine Gelegenheit, eine andere Sprache zu lernen (Menschen lernen oft "Fremdsprachen" durch "Eintauchen").
2) Auf SE-Sites gibt es eine Reihe wertvoller Leute, die "nicht technisch" sind, aber mit Grammatik, Kommunikation und Logik vertraut sind. Solche Leute bringen ein "frisches Auge" zu den Themen und machen eine Reihe von "no brainer" Korrekturen, die andere verpassen, weil sie im Material zu "gefesselt" sind. Sie werden vermutlich wegen Ihrer nicht "technischen" (dh nicht Python) Fähigkeiten wie Logik und Programmierkenntnissen konsultiert.
Und wenn Sie nicht viel Code-Review gemacht haben, hilft Ihnen fast jede Code-Review-Erfahrung als Entwickler. Dies scheint eine gute Übereinstimmung zwischen Ihren Fähigkeiten und Bedürfnissen und denen des Teams zu sein.
quelle
Das hängt davon ab, was das Ziel der Überprüfung ist. dh was du mit effektiv meinst .
Sie werden wahrscheinlich immer noch in der Lage sein, einige Probleme zu erkennen. Wenn Sie alles sind, womit sie sich auseinandersetzen müssen, und sie hoffen nur, dass Sie einen Blick darauf werfen, was hilft und möglicherweise etwas fängt, dann sicher. Viele Konzepte der Struktur sind zwischen Sprachen ähnlich. Einer ist vor allem in der Lage, die Kommentare zu überprüfen. Es sollte gut genug kommentiert werden, dass ein Programmierer, der diese Sprache nicht beherrscht, immer noch ein gutes Gefühl dafür bekommen sollte, was passiert. Wenn nicht, können Sie ihnen mitteilen, wo ihre Kommentare fehlen. Wenn es so gut kommentiert ist ... dann sollten Sie in der Lage sein, einiges über ihre Struktur zu lesen, nur durch die Anmerkungen dessen, was vor sich geht, anstatt tatsächlich den Code dessen zu lesen, was vor sich geht.
Aber Sie werden wahrscheinlich nicht viele andere Probleme entdecken. Wenn sie also beabsichtigen, dass Ihre Überprüfung eine erschöpfende Entscheidung darüber ist, ob dies ein gut gemachtes / praktikables Programm ist oder nicht, werden sie enttäuscht sein.
Ob sich dieses Ergebnis für Sie lohnt oder nicht, hängt weitgehend vom Projekt ab.
quelle