code-readability

___ qstnhdr ___ Tools und Techniken, um das Verständnis von unbekanntem Code zu verbessern? [geschlossen] ___ answer4336455 ___

Mit fremdem Code vertraut machen

Wenn die Codebasis klein genug ist, können Sie sie sofort lesen. Irgendwann werden die Teile zusammenfallen.

In diesem Szenario variiert "klein genug", es wird mit zunehmender Erfahrung größer. Sie werden auch hier von "Cheaten" profitieren: Sie können Teile des Codes überspringen, die Sie aus Erfahrung als "Implementierungsmuster X" kennen.

Sie können es hilfreich finden, kleine Umwege zu machen, während Sie den Code lesen, z. indem du eine Funktion nachschaust, wie du sie genannt hast, dann verbringe ein wenig damit, einen Blick darauf zu werfen. Bleiben Sie nicht auf diesen Umwegen, bis Sie verstehen, was die aufgerufene Funktion tut; Das ist nicht der Punkt, und es wird dir das Gefühl geben, dass du herumspringst und keine Fortschritte machst. Das Ziel beim Umgehen ist es, zu verstehen, was die neue Funktion in weniger als einer halben Minute macht. Wenn Sie nicht können, bedeutet dies, dass die Funktion zu kompliziert ist. Brechen Sie den Umweg ab und akzeptieren Sie die Tatsache, dass Sie Ihre "aktuelle" Funktion ohne diese zusätzliche Hilfe verstehen müssen.

Wenn die Codebasis zu groß ist, können Sie sie nicht einfach lesen. In diesem Fall können Sie beginnen, indem Sie die logischen Komponenten des Programms auf einer hohen Abstraktionsebene identifizieren. Ihr Ziel besteht darin, Typen (Klassen) im Quellcode mit diesen Komponenten zu verknüpfen und dann die Rolle zu identifizieren, die jede Klasse in ihrer Komponente spielt. Es gibt Klassen, die intern in einer Komponente verwendet werden, und Klassen, die für die Kommunikation mit anderen Komponenten oder Frameworks verwendet werden. Teilen und erobern Sie hier: Teilen Sie zuerst die Klassen in verwandte Gruppen auf, dann konzentrieren Sie sich auf eine Gruppe und verstehen Sie, wie ihre Teile zusammenpassen.

Um Ihnen bei dieser Aufgabe zu helfen, können Sie die Struktur des Quellcodes als Richtlinie verwenden (nicht als das ultimative Gesetz; es kann aufgrund menschlicher Fehler manchmal irreführend sein). Sie können auch Tools wie "Suchen nach Verwendungen" einer Funktion oder eines Typs verwenden, um zu sehen, wo auf sie verwiesen wird. Erneut versuchen Sie nicht vollständig zu verdauen, was die IDE Ihnen sagt, wenn Sie es nicht schnell genug machen können. Wenn das passiert, bedeutet das, dass Sie ein kompliziertes Stück Metall aus einer Maschine genommen haben, die Sie nicht ganz verstehen. Lege es zurück und versuche etwas anderes, bis du etwas gefunden hast, das du verstehen kannst.

Fremdsprachlichen Code debuggen

Das ist eine ganz andere Sache. Ich werde ein wenig schummeln, indem ich sage, dass, bis Sie Tonnen von Erfahrung gesammelt haben, es keine Möglichkeit gibt, Code erfolgreich zu debuggen, solange es Ihnen fremd ist.

    
___ answer4336380 ___

Das erste, was ich versuche und tue, ist herauszufinden, was der Zweck des Codes auf einer hohen Ebene ist - die Art des Details ist irrelevant, bis Sie ein wenig über die Problemdomäne verstehen. Eine gute Möglichkeit, das herauszufinden, ist, die Namen der Bezeichner zu betrachten, aber es ist normalerweise noch hilfreicher, den Kontext zu betrachten - woher haben Sie diesen Code? Wer schrieb es? War es Teil einer Anwendung mit einem bekannten Zweck? Sobald Sie herausgefunden haben, was der Code tun soll, können Sie eine Kopie erstellen und neu formatieren, um es für Sie einfacher zu machen, sie zu verstehen. Das kann das Ändern der Namen von Bezeichnern, wo nötig, das Aussortieren von merkwürdigen Einrückungen, das Hinzufügen von Leerzeichen, um Dinge aufzulösen, das Kommentieren von Bits, sobald du herausgefunden hast, was sie tun usw., sein. Das ist ein Anfang, auf jeden Fall ... :)

Auch wenn Sie einmal den Zweck des Codes herausgefunden haben, können Sie durch einen Debugger mit einigen einfachen Beispielen manchmal auch eine bessere Vorstellung davon bekommen, was auf FWIW läuft ...

    
___ qstntxt ___

Ich habe erkannt, dass meine größte Schwäche als Programmierschüler meine schlechte Fähigkeit ist, den Code anderer zu verstehen.

Ich habe keinerlei Probleme mit dem Textbuch-Code oder dem klar kommentierten Code, aber wenn ich ein Programm von ein paar hundert Zeilen mit einem Dutzend verschiedener Funktionen und ohne Kommentare bekomme, fällt es mir sehr schwer, überhaupt zu beginnen .

Ich weiß, dass ich mit dieser Art von Code wahrscheinlich eher in meiner Karriere konfrontiert werde, und ich denke, dass schlechte Codeverständnisfähigkeiten für mich ein großes Hindernis sein werden, worauf ich mich konzentrieren möchte Verbesserung meiner Fähigkeiten in diesem Bereich.

Welche Tools / Techniken haben dazu beigetragen, das Code-Verständnis in Ihrer Erfahrung zu verbessern?

Wie tendieren Sie dazu, unbekannten, unkommentierten Code anzuwenden? Warum? Was ist mit deiner Technik, findest du hilfreich?

Danke

    
___ answer4336358 ___

Ich finde, dass das Zeichnen der Call-Graph- und Vererbungsbäume oft für mich funktioniert. Sie können jedes Werkzeug verwenden, das Ihnen zur Verfügung steht. Ich benutze normalerweise nur ein Whiteboard.

Normalerweise sind die Code-Einheiten / -Funktionen einfach genug, um sie selbst zu verstehen, und ich kann deutlich sehen, wie jede Einheit funktioniert, aber ich habe oft Schwierigkeiten, das größere Bild zu sehen, und dort passiert der Zusammenbruch und ich bekomme das "Ich bin verloren" Gefühl.

Fange klein an. Sagen Sie zu sich selbst: "Ich möchte x erreichen, also wie wird es im Code gemacht?" x ist eine kleine Operation, die Sie verfolgen können. Verfolgen Sie dann den Code und machen Sie etwas Visuelles, auf das Sie nach dem Trace zurückblicken können.

Wählen Sie dann ein anderes x und wiederholen Sie den Vorgang. Sie sollten jedes Mal ein besseres Gefühl für den Code bekommen.

Wenn es Zeit ist, etwas zu implementieren, wählen Sie etwas aus, das ähnlich (aber nicht fast identisch) zu einem der Dinge ist, die Sie verfolgt haben. Auf diese Weise gelangen Sie von einem Trace-Level-Verständnis zu einem Verständnis auf Implementierungsebene.

Es hilft auch, mit der Person zu sprechen, die den Code das erste Mal geschrieben hat.

    
___ tag123Codreadability ___ Code-Lesbarkeit ist, wie einfach es ist, ein Stück Code zu verstehen. Ob es jemandes Code liest oder selbst schreibt. ___ answer4336631 ___

Ich verstehe deine Frustration, aber bedenke, dass da draußen viel schlechter Code ist, also halte dein Kinn hoch. nicht alle Codes sind schlecht:)

Dies ist der Prozess, dem ich folge:

  1. suche nach Unit-Tests, da sie dokumentieren sollten, was der Code tun soll ...
  2. navigieren Sie mit Code Rush / Resharper / Visual Studio Shortcuts durch den Code - dies sollte Ihnen einige Ideen über die logischen und physischen Ebenen geben ...
  3. scannen Sie zuerst den Code, suchen Sie nach gängigen Mustern, Namenskonventionen und Codestilen - dies sollte Ihnen einen Einblick in die Standards der Teams und vielleicht auch die Gedanken der ursprünglichen Programmierer geben ...
  4. Während ich durch die Code-Hierarchie navigiere, notiere ich die Objekte, die verwendet werden ... typischerweise mit Stift & amp; Zeichnen eines einfachen Aktivitätsdiagramms :
  5. Ich neige dazu, von einem gemeinsamen Einstiegspunkt aus zu starten. Wenn es sich um eine Benutzeroberfläche handelt, starten Sie von der Ansicht aus und arbeiten Sie sich bis zum Datenzugriffscode durch, wenn ein Dienst von der Dienstgrenze aus beginnt der Datenzugriffscode ...
  6. suchen Sie nach Code, der refaktoriert werden könnte - wenn Sie Code sehen, der refaktoriert werden kann, haben Sie gelernt, wie Sie ihn vereinfachen können, ohne sein Verhalten zu ändern ...
  7. übe das gleiche, was du gerade prüfst, aber auf andere Weise ...
  8. Wenn Sie nicht getesteten Code lesen, denken Sie darüber nach, wie Sie es testbar machen können ...
  9. Verwenden Sie Code-Rush-Diagnose-Tools, um Methoden zu finden, die eine hohe Wartungskomplexität oder zyklomatische Komplexität aufweisen, und achten Sie besonders auf diese Bereiche, denn die Wahrscheinlichkeit ist groß, dass hier die meisten Bugs auftreten ...

Viel Glück

    
___ tag123readability ___ Lesbarkeit ist ein subjektiver Parameter, der verwendet wird, um einen Aspekt der Codequalität zu messen. Es basiert auf der Annahme, dass Code sowohl in seiner Form als auch in seiner Bedeutung für den Menschen leicht verständlich sein sollte. ___ answer4336459 ___

Verstehen ist ein großartiges Werkzeug zur Code-Analyse. Es war weit verbreitet bei meinem vorherigen Arbeitgeber (L-3), also habe ich es gekauft, wo ich derzeit arbeite.

    
___
8
Antworten

Anzahl der Klammern in clojure verwalten

Ich bin neu in clojure und die Hauptsache, mit der ich mich abmühen muss, ist das Schreiben von lesbarem Code. Ich habe oft Funktionen wie die folgende. %Vor% mit vielen Aufbauten der Endhalterungen. Was sind die besten Möglichkeiten, dies z...
10.04.2012, 19:37
6
Antworten

Wie kann man die SQL-Abfrage in PHP lesbarer machen?

Wenn Sie lange Felder in der SQL-Abfrage haben, wie machen Sie es lesbarer? Zum Beispiel: %Vor%     
08.10.2012, 14:00
6
Antworten

Zu viele if-Anweisungen

Ich habe ein Thema zu besprechen. Ich habe ein Code-Fragment mit 24 Wenns / Elifs. Operation ist meine eigene Klasse, die eine ähnliche Funktionalität wie Enum darstellt. Hier ist ein Fragment des Codes: %Vor% Ich habe Bedenken aus Sicht d...
31.07.2015, 14:27
5
Antworten

Tools und Techniken, um das Verständnis von unbekanntem Code zu verbessern? [geschlossen]

Ich habe erkannt, dass meine größte Schwäche als Programmierschüler meine schlechte Fähigkeit ist, den Code anderer zu verstehen. Ich habe keinerlei Probleme mit dem Textbuch-Code oder dem klar kommentierten Code, aber wenn ich ein Programm v...
02.12.2010, 14:54