Heim >Web-Frontend >Front-End-Fragen und Antworten >So lesen Sie Quellcode für Anfänger

So lesen Sie Quellcode für Anfänger

coldplay.xixi
coldplay.xixinach vorne
2020-09-17 17:38:462463Durchsuche

So lesen Sie Quellcode für Anfänger

Verwandte Lernempfehlungen: Javascript

Ich liebe das Programmieren, es ist mein Job und ich bin froh, dass ich die meiste Zeit mit der Entwicklung von Software verbringen kann. Wie viele Programmierer war ich sowohl fasziniert als auch verwirrt darüber, wie gut der von mir geschriebene Code war und wie ich ihn besser schreiben könnte.

Im Laufe der Jahre habe ich viele Artikel und Bücher über Softwareentwicklung gelesen. Es gibt viele Tintenbücher (in Büchern oder online), die Ihnen zeigen, wie Sie Ihre Programmierung verbessern und ein professionell ausgebildeter Programmiermeister wie ein Ninja werden können! Die meisten dieser Vorschläge haben etwas gemeinsam, darunter das Lesen des Quellcodes. Im Vergleich zu anderen Vorschlägen läuft das Lesen von Quellcode jedoch meist auf einen einfachen Satz hinaus: Suchen Sie sich eine großartige Open-Source-Software oder eine Software, die Ihnen gefällt, öffnen Sie sie (oder drucken Sie sie aus) und lesen Sie sie. Obwohl dies im Allgemeinen ein guter Vorschlag ist, ist er auf dem Papier oberflächlich und es gibt viele Probleme, wenn man ihn tatsächlich in die Praxis umsetzt. In diesem Artikel werde ich versuchen, einige praktische Ratschläge zum Lesen des Quellcodes zu geben, aber vorher wollen wir zunächst die Probleme aufzählen.

Missverständnisse beim Lesen von Quellcode

Wenn Leute über das Lesen von Quellcode sprechen, entsteht im Allgemeinen der Eindruck, dass sie wie Programmiermeister sind, die einfach auf einem Stuhl sitzen und den Code in ihren Händen wie einen Roman lesen können. Nun, ich bin mir sicher, dass es tatsächlich einige hervorragende Programmierer gibt, die es genießen, Kaffee zu trinken, während sie eine Reihe mysteriöser Symbole betrachten, die englischen Sätzen ähneln, und die auch die gesamte Klassenhierarchie und -struktur in ihrem Kopf aufbauen können. Offensichtlich ist dieser Artikel nichts für sie. Sein Publikum sind Leute wie ich, die das Gefühl haben, dass das Anstarren eines Stapels Quellcodes wie das Anschauen einiger langweiliger und bedeutungsloser Übungen ist. Natürlich würden einige argumentieren, dass man aus einem vollständigen Projekt lernen kann, indem man sich Stück für Stück eine einzelne Klasse oder eine einzelne Funktion ansieht, aber meiner Meinung nach sind die meisten Softwareprogramme intern voneinander abhängig, außer bei den einfachsten Problemen. Es ist oft unmöglich, die Designideen und -prinzipien hinter einer bestimmten Funktion oder Klasse zu verstehen, ohne den Rest des Systems zu verstehen.

Die nächste Frage ist, woher man den Quellcode bekommt, der gelesen werden kann (zuvor muss man natürlich erkennen können, welcher Quellcode es wert ist, gelesen zu werden). Es gibt eine Menge exzellenter Software, sowohl Open-Source-Software ist kostenlos erhältlich, als auch Closed-Source-Software erfordert eine Lizenz. Zu den Open-Source-Repositories gehören Sourceforge und GitHub. Wenn Sie für ein Softwareentwicklungsunternehmen arbeiten, haben Sie Zugriff auf proprietären Code in Quellcode-Repositorys. Ein dritter gängiger Ansatz sind Programme, die Softwareentwicklungsbüchern beiliegen oder als Bildungsressourcen angeboten werden (Minix ist ein Paradebeispiel). Tatsächlich fällt es uns aufgrund der Vielzahl an Optionen schwer, eine Auswahl zu treffen. Daher ist es eine schwierige, aber wesentliche Aufgabe, in der riesigen Welt des Codes die richtige zu finden, die wir lesen können.

Ein weiteres Problem ist die im Programm verwendete Programmiersprache. Wenn Sie sich auch mit einer neuen Sprache mit seltsamer Syntax vertraut machen müssen, ist die Belastung einfach ... Eine Katastrophe großen Frust mit sich bringen. Sie müssen also Code finden, der in einer Sprache geschrieben ist, mit der Sie vertraut sind. Wenn der Code, den Sie betrachten, jedoch aus einem Buch stammt oder als Bildungsressource bereitgestellt wird, spielt es keine Rolle, ob Sie die neue Sprache beherrschen, da es Dozenten gibt, die den Kontext erklären können. Wenn Sie wissen, dass es Tiger in den Bergen gibt, Sie aber lieber eine unbekannte Programmiersprache ohne die Anleitung eines Buches oder eines Tutors lesen möchten, dann schlage ich vor, dass Sie sie zumindest lernen und an den Punkt gelangen, an dem Sie Ihre Programmiersprache schreiben können eigenes Programm (Hallo Welt, es zählt nicht, haha).

Die vorherige Frage zum Kontext bringt mich zu meiner nächsten Frage: Es ist viel schwieriger herauszufinden, was der Code tut, wenn man mit der Software selbst nicht vertraut ist. Wenn Sie beispielsweise Linux nicht jeden Tag verwenden und die Linux-Boot-Sequenz kennen, ist es schwierig, die Runlevels herauszufinden, nachdem Sie sich den Linux-Code angesehen haben. Die Erfahrungen und Kenntnisse, die wir bei der Verwendung einer bestimmten Software sammeln, können uns dabei helfen, deren Quellcode, einschließlich häufig verwendeter Terminologie, Funktionen und Merkmale der Software und sogar der verschiedenen Fehler, auf die Sie stoßen, besser zu lesen.

Den Quellcode verstehen

Mir wurde klar, dass „Lesen des Quellcodes“ die Aktivitäten, an denen ich beteiligt bin, nicht genau beschreibt und es angemessener wäre, „den Quellcode verstehen“ zu verwenden. Es fällt mir sehr schwer, vor einem Laptop-Bildschirm zu sitzen (oder es auf Papier auszudrucken) und einfach einen Bildschirm voller Code zu lesen. Ich brauche neben dem Code noch andere Dinge. Ich schaue mir zum Beispiel gerne die Dokumentation an, spiele mit der Software, gehe den Code durch und schreibe sogar Testcode, um ihn auszuführen, und dann kann ich ihn wirklich schätzen. Da ich so viel Zeit und Energie in diese Sache investieren werde, muss ich sehr wählerisch sein und Software finden, die ich „lesen“ (verstehen) möchte.

Meine erste Filterstufe ist die Programmiersprache. Für mich lese ich nur den Code von Programmen, die in C#, VB.NET, Python und Javascript geschrieben sind (obwohl ich auch mit C++, Ruby und F# vertraut bin, aber ich glaube nicht Ich habe das nötige Niveau, um den Code anderer Leute zu verstehen. Als nächstes suche ich nach Software, die ich verwendet habe und die mir das Gefühl gibt, bereits an Bord zu sein, weil ich die Absicht des Codes kenne und weiß, was er nicht kann und welche Einschränkungen er hat (sofern ich damit vertraut genug bin). . Open-Source-Software, die ich jeden Tag verwende, ist ein ausgezeichneter Kandidat (zum Beispiel verwende ich die in C# geschriebenen Open-Source-Tools Cruise Control.NET, NANT und NUnit).

Ich arbeite zufällig für ein Softwareunternehmen (ein Microsoft-Unternehmen). Eine der Quellcode-Auswahlen, die ich gelesen habe, war der Code unseres Unternehmens im Quellcode-Repository. Wenn Sie zufällig auch für ein Softwareunternehmen arbeiten, können Sie sich andere Projekte oder sogar frühere Versionen des Projekts ansehen, an dem Sie gearbeitet haben. Auf diese Weise erhalten Sie nicht nur ein tieferes Verständnis Ihres Codes, sondern auch eine gute Vorstellung davon, was Sie vorher und nachher ausprobiert haben. Allerdings gibt es einige Einschränkungen zu beachten:

  • Erstens: Wenn Sie keinen Zugang zu anderen Projekten haben, müssen Sie um Erlaubnis bitten, da einige Unternehmen ihr „geistiges Eigentum“ sehr ernst nehmen.
  • Zweitens ist die Qualität dieser Software möglicherweise nicht so hoch, wie Sie denken, da proprietärer Code normalerweise nicht einer so strengen Code-Komplettlösung unterzogen wurde wie Open-Source-Code. Es ist wichtig zu beachten, dass die Qualität des Codes ohne regelmäßige Codeüberprüfungen möglicherweise schlecht ist.
  • Drittens (dieses hier wurde durch das Feedback meiner Freunde inspiriert): Wenn Ihr Unternehmen Unternehmenssoftware entwickelt (HR, Finanzen, ERP usw.), gibt es viele Geschäftsbeziehungen, die zuerst verstanden werden müssen. Da der meiste Code außerdem von Faktoren der Geschäftsfunktionalität beeinflusst wird, ist er im Allgemeinen nicht so modular wie eine Anwendung oder API.

Suchen Sie nach gut dokumentierten Projekten (dies gilt sowohl für Open Source als auch für proprietären Code). Damit meine ich, dass eine solche Dokumentation das Gesamtdesign hervorheben und die Logik hinter dem Code erläutern sollte. Wenn es einfach ein automatisch generiertes Dokument vom Typ Java Doc wäre, würde es nicht als die Dokumentation betrachtet, die ich beschreibe :-). Eine Möglichkeit, dies herauszufinden, ist Software für den Bildungsbereich wie Minix. Da sie dazu gedacht sind, durch Software zu lehren, sind sie in der Regel sehr klar dokumentiert und verfügen über umfangreiches Material, das die Designprinzipien hinter dem Code erklärt.

Zusammenfassung

Da Sie nun die Software identifiziert haben, deren Quellcode Sie lesen möchten, und deren Quellcode und Dokumentation heruntergeladen haben, lesen und verstehen wir sie Schritt für Schritt:

  • Gehen Sie die Designdokumentation durch und versuchen Sie es verstehen, wie der Code aufgebaut ist. Gute Softwareprojekte folgen bestimmten Architekturmustern, die die Organisation des Codes bestimmen. Sobald Sie dies beherrschen, wird das Verständnis des Codes viel einfacher. Wenn Sie auch Klassendiagramme zeichnen können, können Sie das Gesamtlayout besser verstehen.
  • Als nächstes müssen Sie es kompilieren und ausführen. Abhängig vom Projekt und seiner Dokumentation kann dies einfach oder schwierig sein.
  • Jetzt ist es an der Zeit, Ihre Lieblings-IDE zu öffnen und mit der Erkundung zu beginnen. Ein guter Ausgangspunkt für die Erkundung ist, den Code einer Funktion, mit der Sie vertraut sind, schrittweise durchzugehen. Auf diese Weise können Sie die verschiedenen Ebenen und Subsysteme durchqueren und verstehen, wie sie miteinander verbunden sind. Als ich beispielsweise NUnit erkundete, schrieb ich zunächst einen Testfall und schaute mir dann die beteiligten Klassen an.
  • Versuchen Sie, die in Ihrem Code verwendeten Entwurfsmuster zu identifizieren. Wenn Sie immer noch nicht wissen, was Designmuster sind, hören Sie sofort mit der Lektüre dieses Artikels auf und lesen Sie ein klassisches Buch über Designmuster. Machen Sie sich mit Designmustern vertraut. Sie sind eine hervorragende Möglichkeit, das in gutem Code enthaltene Design zu identifizieren und zu verstehen. Sobald Sie sich damit vertraut gemacht haben, fällt es Ihnen leichter, beim Lesen des Codes daran zu denken. Es kann Ihnen auch helfen, subtile Anpassungen und magische Änderungen, die der Codeautor am ursprünglichen Entwurfsmuster vorgenommen hat, leichter zu erkennen.
  • Versuchen Sie, Testfälle für Ihren Code zu schreiben, um ihn vollständig zu verstehen. Dies ist eine sehr nützliche Methode, um die Abhängigkeiten zwischen verschiedenen Teilen Ihres Codes zu verstehen. Bevor Sie Testfälle schreiben, müssen Sie zunächst alle Abhängigkeiten erfüllen. Informieren Sie sich als Nächstes über die möglichen Einstiegspunkte und Rückgabewerte Ihres Codes. Dies kann Ihr Verständnis des Codes verbessern und Ihnen helfen, die nächste Ebene zu erreichen.
  • Versuchen Sie abschließend, Ihren Code umzugestalten. An diesem Punkt sind Sie vom einfachen Verstehen des Codes zu einem vertrauten Zustand übergegangen, um ihn ändern zu können. Mit zunehmender Komplexität des Refactorings steigt auch Ihr Verständnis. An dieser Stelle können Sie bei Bedarf Ihren eigenen Code zum Projekt beitragen.

„Quellcode-Lesen“ ist meiner Meinung nach mehr als nur Lesen, es ist eine einzigartige Reihe von Aktivitäten, die zusammenarbeiten, um den Menschen zu helfen, den Code zu verstehen. Das mag einschüchternder erscheinen als einfach nur „Code lesen“, aber die Mühe lohnt sich.

Können Sie nun den Quellcode einfacher und zufriedener „lesen“?

Wenn Sie mehr über das Erlernen des Programmierens erfahren möchten, achten Sie bitte auf die Spalte „PHP-Schulung“!

Das obige ist der detaillierte Inhalt vonSo lesen Sie Quellcode für Anfänger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen