Nun, die Frage steht im Titel: Wie verbessere ich meine Fähigkeiten zum Lesen von Code?
Die Software / Hardware-Umgebung, in der ich derzeit entwickle, ist in Bezug auf die Kompilierungszeiten und die Zeit, die das gesamte System zum Testen benötigt, recht langsam. Das System ist ziemlich alt / komplex und daher ist es in naher Zukunft nicht möglich, es in mehrere kleinere, besser verwaltbare Unterprojekte aufzuteilen.
Mir ist klar geworden, dass das, was den Entwicklungsfortschritt wirklich behindert, meine Codelesefähigkeiten sind. Wie verbessere ich meine Codelesefähigkeiten, damit ich die meisten Fehler und Probleme im Code erkennen kann, noch bevor ich die Taste "Kompilieren" drücke, noch bevor ich den Debugger starte?
Antworten:
Lesen Sie mehr Code
Zum einen habe ich meine etwas anständigen Fähigkeiten im Lesen von Code durch das Lesen von Zertifizierungsfragen erworben. Diese waren sehr schwer zu befolgen, da sie absichtlich schlecht geschrieben waren
Sie sollen doch Ihre Sprachkenntnisse (in meinem Fall Java) auf die Probe stellen.
Je mehr Code Sie lesen, desto mehr Erfahrung sammeln Sie. So einfach ist das
quelle
Optimieren Sie Ihre Entwicklungsumgebung so weit wie möglich, damit Sie Feedback erhalten, das Sie verwenden können.
Moderne IDE's können eine Menge helfen, wenn Sie ihnen die notwendigen Informationen liefern können. Beispiele sind:
Es gibt auch Programme, die logische Fehler in Ihren Programmen identifizieren können, mit denen Sie noch mehr Informationen über Ihr Programm erhalten, aus dem Sie lernen können.
Außerdem kann Ihre IDE Ihnen beim Navigieren in Ihrer Quelle helfen, wenn Sie all diese Dinge kennt. So können Sie problemlos nachschlagen, anstatt sich alles merken zu müssen
Ich schlage vor, dass Sie Ihre Frage bearbeiten, um mehr Informationen über die Umgebung, mit der Sie arbeiten, und die Programme, die Sie schreiben, für bessere Vorschläge bereitzustellen.
quelle
Zusätzlich zu dem, was alle anderen gesagt haben, benötigen Sie Geduld, wenn Sie Code lesen möchten (insbesondere, wenn er nicht von Ihnen stammt). Ja, das Lesen pro Codezeile auswendig erfordert Übung, aber alles ist es wert, und Sie lernen auch die Codierungsstile / -tricks anderer. Folgendes überprüfe ich in der Reihenfolge:
Ich bin es gewohnt, in einem einfachen Texteditor zu codieren, also ist Strg + F mein Freund, aber eine IDE ist sehr nützlich, besonders wenn Sie aus mehreren Dateien lesen.
Wenn Sie derjenige sind, der den Code schreiben wird, haben Sie keine Angst davor, Leerzeichen, Einrückungen und Kommentare einzufügen. Ehrlich gesagt, wenn es für die Augen nicht angenehm aussieht, wird es zu einem Schmerz im Kopf.
quelle
Selbst wenn ich alle Fehler erkennen könnte, bevor ich auf "Kompilieren" drücke, würde ich dies dennoch durch Testen und Kompilieren überprüfen. Ich würde dem nur einen positiven Test und ein laufendes Programm zutrauen.
Ich denke, dass gute Fähigkeiten zum Lesen von Code Sie bei der Hypothese über Code sehr weit bringen können. "Wahrscheinlich würde das schief gehen!", Und testen Sie das. Und bei der Suche nach Fehlern "das könnte die Ursache sein, lasst es uns testen"
Der beste Weg dorthin ist, den Code selbst zu schreiben. Der zweitbeste Weg ist, dass der Code einfach wirklich gut ist und sich von selbst erklärt (wenn es wirklich schwer ist, ist der Code einfach nicht so gut)
Wenn es nicht Ihr eigener Code ist und es nicht gut geschrieben ist, ist der einzige Weg, um besser zu werden, zu tun, zu tun, zu tun. Lesen Sie den Code, probieren Sie verschiedene Dinge aus, schreiben Sie Tests dagegen, lernen Sie die Codebasis kennen und überarbeiten Sie sie. Tools könnten hilfreich sein, Tools, die herausfinden können, wo Methoden verwendet werden, wo Schnittstellen implementiert werden, wo Variablen deklariert werden usw. Und Tools, die Ihnen einen Überblick über die Namespaces, ihre Beziehungen und Metriken zu diesen geben.
quelle
In der Vergangenheit hatte ich ein ähnliches Problem: Mein Trick bestand darin, einen kleinen Test zu schreiben, den Schreibtisch für einige Zeit zu verlassen, zurückzukehren und den Test auf Papier zu simulieren. Auf diese Weise können Sie Ihren Code mit einem neuen Look durchgehen und Sie müssen einen bestimmten Wert überprüfen (anders als wenn Sie Ihren Code durchgehen und sagen: "ahh ... ahh ... ergibt Sinn").
quelle
Möglicherweise wäre es gut, sich darauf zu konzentrieren, jeweils eine Codelesefähigkeit zu erlernen, genau wie bei formalen Codeüberprüfungen jeder Prüfer eine andere Verantwortung trägt. Nehmen Sie einen Code und verbringen Sie eine Woche damit, nach falschen Variablennamen zu suchen. Drücken Sie den gleichen Code nächste Woche erneut, um nach möglichen Nullzeigern zu suchen. die nächste Woche nach doppelten Codeblöcken suchen; dann Multithreading-Probleme usw.
Nachdem Sie einige Zeit damit verbracht haben, verschiedene Detektoren zu honen, stellen Sie möglicherweise fest, dass Sie jetzt Code mit ein paar oder allen aktiven Detektoren lesen können, sodass Sie bei einer einzigen Lesung ein besseres Gefühl für Code haben.
quelle
Wenn Sie von Kompilierungsfehlern sprechen, wird dies nicht passieren. Die beste Lösung für Compilerfehler besteht darin, die Person, die den Build gebrochen hat, mit der Überwachung der Builds zu beauftragen, bis jemand anderes den Build bricht. Du hast es kaputt gemacht, du hast es repariert.
Logikfehler lassen sich viel schwerer erkennen als verhindern. Eine Technik, um die einfachen Fälle zu verhindern, besteht darin, Einheiten- / Regressionstests zu schreiben.
quelle
Ein Tipp, den ich heute Morgen gehört habe (auf SE Radio), war, eine Datei zu nehmen und auf 3pt-Typ zu verkleinern und dann nach Mustern im Text zu suchen. Sie können den Text nicht lesen, es werden jedoch alle Arten von Mustern angezeigt. Es ist eher ein schöner Trick.
Und dies ist einer der Orte, an denen die Kommandozeile dein Freund ist. Grep und pipelines können eine Menge nützlicher Dinge tun.
quelle
Ich war mehrere Jahre Programmierlehrer. In dieser Zeit habe ich viel Zeit damit verbracht, Code zu lesen und zu kommentieren. Dies beinhaltet das Erkennen von Kompilierungsfehlern (wir haben den Code der Schüler nicht immer kompiliert), Logik- und Entwurfsfehlern sowie Standardisierungsproblemen.
Um das gut zu machen, mussten wir ein scharfes Auge für diese Art von Fehlern entwickeln und in der Lage sein, den Code "trocken laufen zu lassen". Diese Art von Aktivität hat mich auch mit vielen Codierungsstilen konfrontiert. Heute sind meine Code-Lesefähigkeiten dank dieser Zeit ziemlich gut.
Mein Vorschlag an Sie lautet also:
Viel Glück!
quelle