[RUBY] Ich habe den lesbaren Code gelesen, machen Sie sich also eine Notiz

Seit ich als unerfahrener Ingenieur angefangen habe, habe ich den lesbaren Code gelesen, also das Memo.

[* Lesbarer Code * Amazon-Kauflink](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83 % AB% E3% 82% B3% E3% 83% BC% E3% 83% 89-% E2% 80% 95% E3% 82% 88% E3% 82% 8A% E8% 89% AF% E3% 81% 84% E3% 82% B3% E3% 83% BC% E3% 83% 89% E3% 82% 92% E6% 9B% B8% E3% 81% 8F% E3% 81% 9F% E3% 82% 81% E3% 81% AE% E3% 82% B7% E3% 83% B3% E3% 83% 97% E3% 83% AB% E3% 81% A7% E5% AE% 9F% E8% B7% B5% E7% 9A% 84% E3% 81% AA% E3% 83% 86% E3% 82% AF% E3% 83% 8B% E3% 83% 83% E3% 82% AF-Theorie-Praxis-Boswell / dp / 4873115655 / ref = sr_1_1? adgrpid = 52747835709 & dchild = 1 & gclid = CjwKCAjw2Jb7BRBHEiwAXTR4jcm6iePgNgKHDmEvEtkvsB5IJ_skZ0aSoztpmqccbdEWkPh9VInvSRoC2DQQAvD_BwE & hvadid = 338561722060 & hvdev = c & hvlocphy = 1009309 & hvnetw = g & hvqmt = e & hvrand = 10166295044081564502 & hvtargid = kwd-334307148361 & hydadcr = 16038_11170849 & jp-ad-ap = 0 & keywords =% E3% 83% AA% E3% 83% BC% E3 % 83% 80% E3% 83% 96% E3% 83% AB% E3% 82% B3% E3% 83% BC% E3% 83% 89 & qid = 1600565375 & sr = 8-1 & tag = googhydr-22)

Es ist keine grobe Notiz, sondern eine kleine detaillierte Notiz!

Kapitel 1 Leicht verständlicher Code

Point

Der Code sollte leicht zu verstehen sein.
Der Code sollte so geschrieben sein, dass andere ihn in kürzester Zeit verstehen können.
Es ist wichtig, einen Code zu haben, der nach 6 Monaten leicht zu verstehen ist!
Es ist besser, den Code kurz zu halten, aber es ist wichtig, die Zeit zu verkürzen, die zum Verstehen benötigt wird.

Ist dieser Code leicht zu verstehen?

Es ist wichtig, einen Schritt zurückzutreten und sich zu fragen!

Kapitel 2 Verpackungsinformationen im Namen

Point

Packen Sie die Informationen in den Namen

Versuchen Sie, Informationen zu lesen, indem Sie sich nur den Namen ansehen

・ Wählen Sie ein klares Wort → Vermeiden Sie leere Wörter. "Get" ist kein sehr klares Wort. Ich weiß nicht wo ich hinkommen soll?

Verwenden Sie beispielsweise fetch / download je nach Situation anstelle von get.

Vermeiden Sie generische Namen

→ Vermeiden Sie leere Namen wie tmp und foo. Geben Sie ihm einen Namen, der einen bestimmten Zweck oder Wert darstellt. Rückgabewert retval × sum_squares○

Wenn Sie also einen generischen Namen wie tmp / it / retval verwenden, sollten Sie auf einen guten Grund vorbereitet sein! Es ist Unsinn, dies nur für Fahrlässigkeit zu verwenden! "Benennungskraft"!

Verwenden Sie konkrete Namen anstelle von abstrakten Namen

→ Verwenden Sie einen passenderen Namen

Fügen Sie Informationen mithilfe von Suffixen hinzu

→ Wenn es wichtige Informationen sind, die Sie unbedingt informieren müssen, können Sie sie zu "Variablenname" hinzufügen. Die Werteinheit ist klarer als delay → delay_secs. Gleiches gilt für die Sicherheit. Passwort → Klartext-Passwort (Passwort ist Klartext, daher sollte es vor der Verarbeitung verschlüsselt werden)

Fügen Sie Attribute hinzu, bei denen Sie die Bedeutung von Variablen verstehen müssen.

Bestimmen Sie die Länge des Namens

→ Es ist einfach schwer zu merken, es nimmt den Bildschirm ein und die Menge an Code nimmt zu. Wenn der Bereich klein ist, können Sie einen Kurznamen verwenden. Wenn der Umfang des Bezeichners groß ist, muss der Name mit genügend Informationen gefüllt sein, um dies zu verdeutlichen. Es ist leicht wegzulassen, aber projektspezifische Abkürzungen sind nicht akzeptabel. Ich kann die neuen Mitglieder nicht verstehen.

Kommunizieren Sie Informationen im Namensformat

→ Sie können Informationen auch mit Unterstrichen, Bindestrichen und Großbuchstaben in den Namen einfügen. Das Team entscheidet, welche Regeln verwendet werden sollen. Konsistenz ist wichtig.

Beispielsweise werden Klassenmitgliedsvariablen unterstrichen, um sie von lokalen Variablen zu unterscheiden.

Kapitel 3 Namen, die nicht missverstanden werden

Fragen Sie sich: "Ist der Name nicht mit etwas anderem verwechselt?" Suchen Sie aktiv nach Missverständnissen.

Verwenden Sie min und max, um Grenzwerte einzuschließen.

Verwenden Sie first und last, um den Bereich anzugeben.

Verwenden Sie Anfang und Ende für inklusive / exklusive Bereiche.

Klären Sie die Bedeutung von wahr und falsch, wenn Sie Namen für boolesche Variablen und Funktionen auswählen, die boolesche Werte zurückgeben. Gefährliches Beispiel bool read_password = true; Es gibt zwei Interpretationen ・ Das Passwort muss von nun an gelesen werden ・ Das Passwort wurde bereits gelesen.

Hier ist es besser, need_password anstelle von read zu verwenden.

Zusammenfassung

Der Vorname ist, dass die Person, die den Code liest, Ihre Absichten richtig verstehen kann. Stellen Sie vor der Entscheidung für einen Namen sicher, dass der Name nicht missverstanden wird, indem Sie über abweichende Meinungen nachdenken. Achten Sie auch auf die Erwartungen des Benutzers an das Wort. Beispiel: Für Get () und size () werden leichte Methoden erwartet.

Kapitel 4 Schönheit

Ein guter Code muss "augenfreundlich" sein.

Drei Prinzipien • Verwenden Sie ein Layout, das mit den Mustern übereinstimmt, an die der Leser gewöhnt ist.

Offensichtlich ist ein gut aussehender Code einfacher zu verwenden. Wenn Sie es schnell scannen können, können Sie Code erstellen, der für jeden leicht lesbar ist.

Ein gut aussehender Code kann nicht nur die Oberfläche, sondern auch die Struktur des Codes verbessern.

Halten Sie die vertikalen Linien gerade

Durch das Ausrichten der Spalten kann der Code leichter lesbar werden. Auf diese Weise können Tippfehler leichter gefunden werden.

Gruppieren Sie Deklarationen in Blöcken

→ Um einen schnellen Überblick über den Code zu erhalten, können Sie ihn in Gruppen aufteilen und "Einheiten" erstellen. Leicht verständlicher Code.

Es ist jedoch wichtig zu beachten, dass ein konsistenter Stil wichtiger ist als ein "korrekter" Stil. Selbst wenn Sie es richtig und einfach schreiben, wird es schwierig sein, es zu sehen und zu lesen, wenn Sie es in einem unzusammenhängenden Stil als Ganzes schreiben.

Zusammenfassung

Wenn Sie Ihren Code auf konsistente und aussagekräftige Weise "formen", ist er schnell und einfach zu lesen.

・ Wenn Sie dasselbe mit mehreren Codeblöcken tun, machen Sie die Silhouette zur gleichen Person ・ Das Ausrichten der "Spalten" des Codes erleichtert den Überblick. ・ Was an einer Stelle wie A / B / C aufgereiht war, sollte an einer anderen Stelle nicht wie B / C / A aufgereiht werden. Wählen Sie eine aussagekräftige Reihenfolge und behalten Sie diese Reihenfolge immer bei

Kapitel 5 Wissen, was zu kommentieren ist

Wertvolle und nicht bewertete Kommentare
Schreiben Sie keine Informationen, die unmittelbar aus dem Code ersichtlich sind.
Schreiben Sie keine Kommentare für Kommentare.

Schreckliche Namen ändern Namen ohne Kommentar → Kommentare werden nicht verwendet, um schreckliche Namen auszugleichen. Wenn ja, ändern Sie es in einen klareren Namen.

Was soll ich als Kommentar schreiben? → Gute Kommentare sind für "Aufzeichnen Ihrer Gedanken". Sie sollten "wichtige Gedanken" schreiben, wenn Sie Code schreiben

Sie können kommentieren, warum der Code verschmutzt ist. Ein Kommentar, der jemanden ermutigt, das Problem zu beheben.

Lassen Sie uns die Fehler im Code kommentieren.

→ Schreiben Sie in die Kommentare, was Sie mit dem Code machen möchten. → Kann die Qualität des Codes informieren und die Richtung der Verbesserung angeben.

Fügen Sie der Konstante einen Kommentar hinzu.

→ Was bedeutet diese Konstante bei der Definition einer Konstante? Es gibt oft einen Hintergrund, warum sie diesen "Wert" haben. → Es ist wichtig, in den Kommentaren festzuhalten, was Sie gedacht haben, als Sie sich für den Namen der Konstante entschieden haben.

Denken Sie als ein Ort, an dem die Leser stehen können
Stellen Sie sich vor, Sie würden gefragt.

Fügen Sie dort einen Kommentar hinzu, um die Antwort zu verdeutlichen.

Kündigen Sie eine Falle an, die süchtig zu machen scheint.

→ Sagen Sie die Probleme voraus, die bei der Verwendung des Codes auftreten, und geben Sie sie in den Kommentaren an.

Übersichtskommentare

Die neuen Teammitglieder sollten den Code verstehen. Wie arbeiten die Klassen zusammen? Eine solche Dies ist ein Kommentar, den Sie in Ihren Code schreiben müssen.

Ein kurzes, angemessenes Dokument ist in Ordnung. Besser als nichts.

Zusammenfassender Kommentar

Wichtig sind auch Kommentare, die den Low-Level-Code gut zusammenfassen.

Ausgezeichneter Code> Schrecklicher Code + ausgezeichneter Kommentar

Schreiben Sie alles, was Ihnen hilft, den Code zu verstehen!

Überwinde den Schreibblock

Schreibblockade = Ich kann nicht schreiben, weil ich feststecke

Der einzige Weg, darüber hinwegzukommen, besteht darin, mit dem Schreiben zu beginnen. Schreiben Sie Ihre Meinung auf und hinterlassen Sie einen Kommentar. 3 Schritte, um einen Kommentar zu schreiben

  1. Schreiben Sie die Kommentare trotzdem in Ihren Kopf.
  2. Lesen Sie die Kommentare und finden Sie heraus, was verbessert werden muss.
  3. Verbessern.

Zusammenfassung

Der Zweck des Kommentars ist es, dem Leser zu helfen, die Absicht des Codes zu verstehen.

Dinge, die Sie nicht kommentieren sollten

・ Was kann aus dem Code extrahiert werden? ・ "Hilfskommentar" zur Ergänzung des schrecklichen Codes → Korrigieren Sie den Code, anstatt einen Kommentar zu schreiben

Dinge zu kommentieren

Meine Gedanken aufzuzeichnen · Schreiben Sie, warum der Code so aussieht und nicht umgekehrt

Denken Sie aus der Sicht des Lesers ・ Fügen Sie einen Kommentar hinzu, in Erwartung dessen, was die Person, die den Code liest, "Was?" ・ Dokumentieren Sie ein Verhalten, das den durchschnittlichen Leser überrascht

Kapitel 6 Kommentare sind korrekt und prägnant

Wie kann ich es genau und präzise schreiben? Kommentare sollten ein hohes Informationsverhältnis zum Bereich aufweisen.

Halten Sie die Kommentare kurz

Soll ich das mit drei Zeilen erklären? → Wenn Sie in einer Zeile erklären können, verwenden Sie eine Zeile.

Vermeiden Sie mehrdeutige Synonyme

Ich weiß nicht, was "es" oder "das" bedeutet. Zum Beispiel //データをキャッシュに入れる。ただし先にそのサイズをチェックする。 Ich weiß nicht, was "das" in diesem Fall bedeutet. Es ist verwirrend, daher ist es leichter zu verstehen, wenn Sie die Nomenklatur in die Synonyme einfügen.

//データをキャッシュに入れる。ただし先にデータサイズをチェックする。

Polnische knackige Sätze

Genaue Kommentare und Prägnanz sind oft kompatibel.

Beispiel

//これまでにクロールしたURLかどうかによって優先度を変える ↓ //これまでにクロールしていないURLの優先度を高くする

Der Boden ist einfach, kurz und direkt.

Schreiben Sie die Absicht des Codes

Kommentare, die nur das Verhalten des Codes schreiben, wie es ist ✖︎

Schreiben Sie in die Kommentare, was Sie gedacht haben, als Sie den Code geschrieben haben. Dies macht es leicht zu bemerken, dass der Code und die Kommentare inkonsistent sind (sogenannte Bugs). Kommentare spielen die Rolle einer redundanten Inspektion.

Zusammenfassung

Schreiben Sie einen Kommentar mit möglichst vielen Informationen auf kleinem Raum

・ Vermeiden Sie Synonyme wie "es" und "dies", die sich auf mehrere Dinge beziehen können ・ Erklären Sie die Funktionsweise der Funktion so genau wie möglich. ・ Wählen Sie sorgfältig die tatsächlichen Eingabe- / Ausgabebeispiele aus, die in die Kommentare aufgenommen werden sollen · Die Code-Absicht wird auf einer hohen Ebene geschrieben, nicht auf einer Detailebene

Kapitel 7 Erleichtern Sie die Lesbarkeit des Kontrollflusses

Erleichtern Sie die Lesbarkeit des Codesteuerungsflusses

Machen Sie den Kontrollfluss wie Bedingungen und Schleifen so "natürlich" wie möglich. Schreiben Sie, damit der Leser des Codes nicht anhält oder zurückliest!

Argumentationsreihenfolge des bedingten Ausdrucks

if (length >= 10)

Oder

if (10 =< length)

Offensichtlich ist der erste leichter zu lesen.

Hierfür gibt es eine Richtlinie.

Linke Seite → Formel "Untersuchungsziel". Veränderung. Rechte Seite → Formel "Vergleichsziel". Es ändert sich nicht viel.

Es ist das gleiche wie Englisch.

Reihenfolge der if / else-Blöcke

Es gibt Überlegenheit und Unterlegenheit in der Reihenfolge

・ Verwenden Sie ein positives System anstelle einer negativen Zustandsform. Verwenden Sie beispielsweise if (debug) anstelle von if (! Debug). ・ Schreiben Sie zuerst einfache Bedingungen. Leicht zu erkennen, da if und else auf demselben Bildschirm angezeigt werden. ・ Schreiben Sie die Bedingungen auf, die Aufmerksamkeit erregen oder zuerst auffallen

Je nach Situation kann es zu Konflikten kommen. In diesem Fall liegt es in Ihrem eigenen Ermessen.

Dreiecksoperator

Es hat den Vorteil, in einer Zeile organisiert zu sein, aber im Gegenteil, es ist schwierig, mit einem Debugger zu lesen und durchzugehen.

Verkürzen Sie die Zeit, die andere zum Verstehen benötigen, anstatt die Anzahl der Zeilen zu verkürzen

Verwenden Sie grundsätzlich if / else-Anweisungen! Verwenden Sie den ternären Operator nur, wenn er vereinfacht wird!
Kehren Sie schnell von der Funktion zurück

Einige Leute denken, dass Sie nicht mehrere return-Anweisungen in einer Funktion verwenden sollten, aber das ist falsch. Es ist gut, schnell von der Funktion zurückzukehren.

Mach das Nest flach

Verschachtelter Code ist schwer zu verstehen. Schauen Sie sich den Code frisch an, wenn Sie Änderungen vornehmen. Machen Sie einen Schritt zurück und schauen Sie sich das Ganze an.

Können Sie dem Ablauf der Ausführung folgen?

Die Verwendung von Komponenten macht es schwierig, dem Code zu folgen. Thread → Ich bin nicht sicher, welcher Code wann ausgeführt wird. Signal- / Interrupt-Handler → Möglicherweise wird anderer Code ausgeführt. Ausnahme → Verschiedene Funktionsaufrufe stehen kurz vor dem Ende

Die Verwendung dieser Komponenten kann andererseits Ihren Code leichter lesbar und weniger redundant machen. Wenn Sie es nicht richtig verwenden, verlieren Sie den Überblick über den Code.

Kapitel 8 Teilen einer riesigen Formel

Teilen Sie die riesige Formel in Stücke, die leicht zu schlucken sind

Achten Sie auf "intelligente" Codes. Später wird es verwirrend, wenn andere den Code lesen.

Es ist schwierig, eine riesige Formel auf einmal zu verstehen. Der einfachste Weg, dies zu tun, besteht darin, "erklärende Variablen" einzuführen. Erklärende Variablen, die große Ausdruckswerte enthalten, haben drei Vorteile ・ Eine riesige Formel kann geteilt werden · Sie können Ihren Code dokumentieren, indem Sie den Ausdruck mit einem kurzen Namen erläutern ・ Für den Leser wird es einfacher, das Haupt- "Konzept" des Codes zu erkennen.

Eine andere Möglichkeit besteht darin, das Gesetz von De Morgan zu verwenden, um die Logik zu manipulieren.

Wenn Sie komplizierte Logik sehen, teilen Sie sie aggressiv auf!

Kapitel 9 Variablen und Lesbarkeit

Löschen Sie die Variable

Der Code entfernt Variablen, die nicht lesbar sind. → Der Code ist präzise und leicht verständlich.

Reduzieren Sie den Umfang der Variablen.

Es ist richtig, globale Variablen zu vermeiden. → Es ist schwierig zu verfolgen, wo und wie es verwendet wird. Es ist eine gute Idee, den Umfang aller Variablen zu verkleinern, nicht nur globaler Variablen.

Reduzieren Sie die Anzahl der Codezeilen, in denen die Variable angezeigt wird, so weit wie möglich.

Es wird empfohlen, den Zugriff so weit wie möglich zu beschränken, um den Code zu reduzieren, der die Variablen sichtbar macht. → Warum? Weil Sie die Variablen reduzieren können, über die Sie sofort nachdenken müssen

Schreiben Sie Variablen nur einmal

→ Variablen, die sich "nicht dauerhaft ändern", sind einfach zu handhaben.

Je mehr Stellen Sie Variablen bearbeiten, desto schwieriger ist es, den aktuellen Wert zu ermitteln.

Zusammenfassung

Programmvariablen wachsen schnell und können nicht mehr verfolgt werden Code ist leichter zu lesen, wenn Sie Variablen reduzieren und ihn so leicht wie möglich gestalten

・ Störvariablen löschen

Kapitel 10 Extrahieren von nicht verwandten Unterproblemen

Engineering ist die Aufteilung großer Probleme in kleinere und die Konstruktion von Lösungen für jedes Problem.

In diesem Kapitel geht es darum, nicht verwandte Unterprobleme aktiv zu finden und zu extrahieren.

  1. Sehen Sie sich die Funktionen und Codeblöcke an und fragen Sie sich: "Was sind die übergeordneten Ziele dieses Codes?"
  2. Fragen Sie jede Codezeile: "Hat das übergeordnete Ziel eine direkte Auswirkung? Löst es ein nicht verwandtes Unterproblem?"
  3. Wenn es eine beträchtliche Menge an Code gibt, die irrelevante Unterprobleme löst, extrahieren Sie sie in eine andere Funktion.

Recommended Posts

Ich habe den lesbaren Code gelesen, machen Sie sich also eine Notiz
Ich habe den "Object-Oriented Practice Guide" gelesen, also ein Memorandum
Ich bin gestolpert, als ich versucht habe, neo4j in der jenv-Umgebung zu verwenden. Machen Sie sich also eine Notiz
Ich habe den Java-Test Level 2 bestanden und werde eine Notiz hinterlassen
[JAVA] Projekt Euler, ich steckte im achten Quartal fest
Ich war ein wenig süchtig nach dem S3-Prüfsummenvergleich, machen Sie sich also eine Notiz.
Hinweise zum Umfang
Ich habe das Kotlin-Startbuch gelesen
Ich habe JAX-RS ausprobiert und mir das Verfahren notiert
Der Artikel für Neuankömmlinge hat mich inspiriert. Notieren Sie ihn sich, damit Sie Ihre ursprünglichen Absichten nicht vergessen.
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ich habe die Quelle von ArrayList gelesen, die ich gelesen habe
Ich habe die Quelle von Integer gelesen
Ich habe die Quelle von Long gelesen
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Ich habe die Quelle von Short gelesen
Ich habe die Quelle von Byte gelesen
Ich habe die Quelle von String gelesen
[Java-Anfänger] Ich habe ein etwas tieferes Verständnis von "Es ist Zeit, neue zu verwenden", also machen Sie sich eine Notiz
Notieren Sie sich die Ruby-Schlüsselwortargumente
Ein Hinweis zur libGDX Utils-Klasse
Überprüfen Sie die Notizen für die Klasse java.util.Optional
Ein Überprüfungshinweis für die Klasse java.util.Objects
Überprüfen Sie die Notizen für das Paket java.time.temporal
Warum war das Lesen des Codes schmerzhaft?
Eine Notiz, die ich aufgegeben habe, um eine benutzerdefinierte Anmerkung für Lombok zu erstellen
03. Ich habe eine Anfrage von Spring Boot an die Postleitzahlensuch-API gesendet
[Kleine Geschichte] Ich habe versucht, die Java-ArrayList etwas komfortabler zu gestalten
Ich suchte nach einem leichten Framework, das das plötzliche "schnell machen" beantworten würde.
Memorandum zum Bereinigen des Codes Ruby
Machen Sie einen Rand links vom TextField
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Ein Hinweis, wenn der Heroku-Befehl nicht mehr verfügbar ist
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Code zum Verbinden von Rails 3 mit PostgreSQL 10
[API] Ich habe versucht, die Postleitzahlensuch-API zu verwenden
Ich habe Code Pipeline mit AWS CDK erstellt.
Machen Sie einen Ausschnitt für Thymeleaf in VS Code
Ein Memo über den Fluss von Rails und Vue
Ich habe einen Testcode (Junit & mockit) für den Code geschrieben, der die AWS-API (Java) aufruft.
Ich hasse diese Art von Code! Eine Sammlung von Anti-Mustern, die tatsächlich auf dem Feld zu sehen sind
7 Dinge, die du behalten sollst, damit es kein verdammter Code wird
Kintone-Klon? Ich war ziemlich süchtig danach, die OSS WebDB-Erweiterung mit Lightsail + Docker zu starten. Notieren Sie sich dies.