Was passiert mit Programmierern am häufigsten, wenn sie den Code anderer lesen? [geschlossen]

8

Wenn Sie anderen Code lesen, haben Sie normalerweise Probleme, ihn zu verstehen, oder stellen Sie normalerweise den anderen Code in Frage, ob er falsch / nicht effizient / schlecht formatiert ist (usw.)?

Jemand, der liest, was Sie bei Ihrem ersten Job codiert haben

snoopy
quelle
Du wirst assimiliert. Du wirst Teil des Einen.
Thomas Eding
1
Ich muss sagen, dass Sie in einer professionellen Umgebung im Allgemeinen die defekten Teile reparieren werden, die dazu neigen, die schlechtesten Teile des Codes zu sein. Meine Erfahrung ist, dass es fast immer wie Ihr Cartoon ist. Wenn Sie das Glück haben, irgendwo zu arbeiten, wo die Softwarequalität für den Geschäftserfolg entscheidend ist - und das Unternehmen weiß das zu schätzen -, ist Ihre Erfahrung viel besser. Das Beheben von Fehlern und das Erweitern von Dingen führt Sie jedoch unweigerlich durch die schlimmsten Teile einer Codebasis.
GlenPeterson

Antworten:

19

Heutzutage habe ich keine großen Probleme, den Code anderer Leute zu lesen. Ich habe so viel schlechten Code gesehen, dass ich sogar diagnostizieren kann, welche Art von Evolution zu irgendetwas geführt hat, das ich finde.

In den meisten Fällen handelt es sich bei professionell schlechtem Code um Code, der in Ordnung war, aber Best Practices, Anforderungen oder Fähigkeiten wurden darunter entfernt. Manchmal ist es nur jemand, der schlecht oder neu in der Sprache ist, aber das ist auch ziemlich offensichtlich (und in einer professionellen Umgebung ungewöhnlich). Je besser ich verstehe, warum Code verrottet, desto weniger stelle ich die Kompetenz anderer Programmierer in Frage.

Telastyn
quelle
9
+100 für "je weniger ich die Kompetenz anderer Programmierer in Frage stelle". Ich denke, die manchmal gegenwärtige Haltung "klar, dass ein Idiot diese geschrieben hat" schafft eine Umgebung, in der Neulinge Angst haben, Fragen zu stellen (oder "Nicht-Idioten" stellen ihre eigenen Praktiken nicht genug in Frage), was wiederum zu schlechtem Code führt.
Timothy Jones
1
@TimothyJones Sie wissen, dass es tatsächlich möglich ist, über den Kopfgeldmechanismus +100 zu vergeben?
Dawood ibn Kareem
1
@ DavidWallace Ich hatte vergessen, danke. Dann kann ich jedoch keinen Kommentar mehr abgeben. Vielleicht komme ich zurück und mache es, wenn es nicht nur mein Vertreter ist.
Timothy Jones
3
Das Schlimmste ist, wenn Sie sagen: "Klar, ein Idiot hat das geschrieben", kurz bevor Sie feststellen, dass Sie sich Ihren eigenen Code ansehen!
GlenPeterson
1
@ GlenPeterson, Nein, ich würde sagen, das Schlimmste ist, wenn derjenige, der es geschrieben hat, direkt neben Ihnen steht ...
Svish
9

Dies kann das Ergebnis dieses Entwicklungsprozesses sein .

In den letzten 2 Jahren habe ich mit anderen Leuten gearbeitet. Ich habe es getestet, Fehler behoben und Verbesserungen vorgenommen. Nach meiner Erfahrung denke ich normalerweise, dass der Code schlecht, voller Fehler, langsam, viel mehr Speicher als nötig verbraucht, Programmierkonzepte unangemessen verwendet, wirklich schlecht formatiert (das ist schwer zu leben), nicht kommentiert und der Logikfluss a ist Chaos. Was ist, wenn ich Ihnen sage, dass ich eine Funktion mit 5k Codezeilen gefunden habe?

Nach meiner Erfahrung stelle ich normalerweise die Qualität des Codes in Frage. Wenn etwas schwer zu verstehen ist, weil es komplex ist, macht es Sinn, nachdem Sie es verstanden haben. Aber wenn es nur schlecht ist, wird es immer schlecht sein.

Joqus
quelle
4

Kurze Antwort: Meistens gefällt es uns nicht oder wir werden sehr kritisch, warum das Codieren auf diese Weise erfolgt und nicht umgekehrt. Je mehr Sie jedoch den schlechten Code anderer lesen, desto schneller schätzen Sie gut geschriebenen Code :)

Es mag zwar offensichtlich klingen, aber der beste Weg, um den Code von Menschen besser zu lesen, ist: durch Lesen des Codes von Menschen . Das Problem ist, dass Menschen, die normalerweise den Code anderer lesen, nicht versuchen, ihn zu " groken " , dh sich mit ihm vertraut zu machen. Sie machen das Äquivalent zu Speed-Reading-Gedichten.

Um den Code eines anderen zu erfassen, können Sie Folgendes versuchen:

  • Code umgestalten.
  • Wenn Sie eine Funktion zum Hinzufügen auswählen möchten, müssen Sie in die Tiefen des Codes gehen.
  • Schreiben umfassender Komponententests für den Code.

Alle diese Schritte zwingen Sie dazu, den Code ausführlicher zu lesen.

Es gibt auch einige Tipps, wie Sie das Verständnis einer Codebasis maximieren können, die Sie für Wartung und Support eingeführt haben:

Wenn Sie eine grundlegende Vorstellung davon haben, was los ist, sollten Sie sich den Datenspeicher (die Persistenzschicht) genauer ansehen. Das ist ein weiterer guter Weg, um zu verstehen, was passiert, aber stellen Sie sicher, dass die Dinge, die Sie studieren, tatsächlich verwendet werden. Ich kann mich ein paar Mal daran erinnern, wie ich mit diesem Ansatz einigen Klassen wirklich auf den Grund gegangen bin und dachte, ich hätte das System verstanden - und später festgestellt, dass die Klassen überhaupt nicht verwendet wurden.

Es mag wie eine entmutigende Aufgabe erscheinen - es braucht Zeit und kein ausgefallenes Werkzeug kann den Bedarf an Intelligenz beseitigen -, aber es kann auch sehr lohnend sein. Während Sie fortfahren, werden Sie wahrscheinlich viele Fehler in Eck- / Randfällen finden und Möglichkeiten zur Verbesserung des Codes finden. Ein Ratschlag: Nehmen Sie sich nicht zu viel Zeit für Refactoring / Änderungen, bis Sie den Code gut verstanden haben. Oft stellt sich heraus, dass das, was beim ersten Mal wie ein Fehler oder einfach nur schlechter Code aussieht, ein subtiles Genie bei der Arbeit an späteren, aufgeklärten Untersuchungen ist. Das Entfernen von nicht verwendetem Code ist außerdem sehr zufriedenstellend und ideal für zukünftige Betreuer. Natürlich mit der Annahme, dass die gesamte Codebasis versioniert ist.

Yusubov
quelle