Delphi-Codierungsspezifikationen Autor: Tulipsy Datum der Aktualisierung: 16. Dezember 2003 Inhalt 1. Allgemeine Konventionen (Benennung – Einrückungen und Leerzeichen – Ränder – Groß-/Kleinschreibung – Kommentare) 2. Anweisung (begin...end-Anweisung-if-Anweisung-case-Anweisung-for-Anweisung-while-Anweisung-repeat-Anweisung-mit-Anweisung-Ausnahmebehandlungsanweisung) 3. Prozeduren und Funktionen (Benennung und Formatierung – formale Parameter – Variablen – Typ – benutzerdefinierte Typen) 4. Der Zweck der Formulierung von Codierungsstandards im Zusammenhang mit der Objektorientierung (Klassenbenennung und Format-Feld-Methode-Eigenschaft-Methode-Implementierung) besteht darin, einer Gruppe von Programmierern die Generierung von Code im gleichen Stil zu ermöglichen, sodass ein Team einen Code bilden und verwalten kann bestimmten Stil. Wenn dieses Ziel erreicht wird, sehen die Dateien des gesamten Projekts so aus, als wären sie von einem Programmierer geschrieben worden. Das Gute macht Spaß, aber der Vorteil besteht darin, dass der Code jedes Programmierers für andere leicht verständlich ist, was die Wartbarkeit des Codes erheblich verbessert und somit die Wartungskosten senkt. Dies ist eine ideale Situation für jedes Team. Für den Einzelnen kann auch die Wahl oder Selbstgenerierung einer Kodierungsnorm und die Einhaltung dieser Norm zu guten Ergebnissen führen. Das ist übrigens ein sehr verlockendes Ziel, aber nicht allzu schwer zu erreichen. Jede Programmiersprache hat ihre eigenen Codierungsstandards. Natürlich müssen wir auch aus den Standards anderer Programmiersprachen lernen. Daher ist es sehr wichtig, von anderen zu lernen. Zweitens dient die Verwendung von Codierungsstandards dazu, die Arbeit von Programmierern zu vereinfachen. Die Bedeutung von „Vereinfachung“ besteht nicht darin, die Codemenge zu reduzieren (im Gegenteil, die häufige Einhaltung der Standards führt zu mehr Code), sondern darin, die Arbeit des Programmierers zu reduzieren Arbeit bei der Aufrechterhaltung der Codemenge. Programmieren ist eine sehr komplexe Aufgabe. Es ist entmutigend, mit verschiedenen Beziehungen umzugehen, und es gibt untrennbar miteinander verbundene Beziehungen. Programmierer sollten den Großteil ihrer Energie darauf verwenden, sich mit Beziehungen zu befassen, und keine Zeit mit zu detaillierten Themen verschwenden. Wenn er die Idee und Struktur des Programms auf einen Blick verstehen kann, kann schnell ein Wartungsplan erstellt werden. Darüber hinaus sollte der Codierungsstandard ein sehr benutzerfreundlicher Standard sein, auf den Sie zurückgreifen und den Sie ändern können, der jedoch einfach zu verwenden sein muss. Aber stellen Sie in einer Gruppe sicher, dass alle die gleichen Standards anwenden. Programmieren ist ein sehr flexibler Job. Nur mit flexiblem Denken und flexibler Anwendung können gute Ergebnisse erzielt werden. Darüber hinaus dient die Verwendung von Spezifikationen weitgehend dazu, die Speicherbelastung für Programmierer zu verringern. Das menschliche Denkvermögen ist äußerst gut, aber das Gedächtnis ist sehr schlecht. Wir sind den ganzen Tag mit Computern konfrontiert, und das Wichtigste, was er uns dabei helfen möchte, ist das Gedächtnis. Daher ist es eines unserer Ziele, die Denkvorteile von Programmierern zu maximieren. Schließlich haben Programmiertools einen großen Einfluss auf Codierungsstandards, und dieser Einfluss ergibt sich aus dem Programmierstil des Entwicklers. Da wir ebenfalls auf C++ basieren, werden wir in Microsoft Visual C++ und Borland C++ Builder nicht genau dieselben Codierungsspezifikationen verwenden. Microsoft und Borland haben unterschiedliche und sehr unterschiedliche Stile. Als Benutzer können wir auf dieser Grundlage Änderungen vornehmen, es gibt jedoch Einschränkungen. Wenn wir uns für Anbieter und Entwicklungstools entscheiden, bestimmen wir tatsächlich auch unseren zukünftigen Stil. 1. Allgemeine Konventionen 1.1 Benennung Das Grundprinzip der Benennung besteht darin, dass der Name die Funktion der Daten klar zum Ausdruck bringen sollte. Object Pascal unterstützt lange Dateinamen. Namen sollten Verben, Substantive oder eine Kombination aus beidem enthalten. Sie dürfen keine in Delphi definierten reservierten Wörter und Schlüsselwörter verwenden und versuchen, keine in anderen Sprachen definierten reservierten Wörter und Schlüsselwörter zu verwenden. Versuchen Sie, vollständige Wörter zu verwenden und Abkürzungen, Präfixe und Suffixe zu vermeiden. Ungarische Nomenklaturen werden nicht empfohlen. Um die Lesbarkeit von Namen sicherzustellen, werden Namenskonventionen verwendet. Die durch die ungarische Nomenklatur repräsentierten Benennungsstandards haben viele Präfixe und Suffixe entwickelt, um den Typ, den Umfang oder andere verschiedene Attribute von Daten anzugeben. In Delphi können Sie diese Methode sicherlich verwenden, dies ist jedoch keine empfohlene Methode. Ein Grund dafür ist, dass diese Art der Namenskonvention zu viele zusätzliche Speicheraufgaben mit sich bringt, und ein anderer Grund liegt in den Eigenschaften von Delphi selbst. Die obligatorische Typprüfung von Delphi überwacht automatisch die Verwendung aller Variablen, sodass wir nur ein wenig darauf achten müssen (auf die Groß- und Kleinschreibung von Wörtern achten), ohne mühsam verschiedene Präfixe hinzufügen zu müssen. Darüber hinaus sollte die Betrachtung von Daten eher auf der Bedeutung als auf der Art oder dem Umfang basieren, und das Augenmerk sollte auf die Programmstruktur, logische Beziehungen und Designideen gelegt werden. In Delphi müssen Sie also nur eine vollständige Wortkombination zum Benennen verwenden, an nichts anderes denken und natürlich sollten Sie es so prägnant wie möglich halten. In einigen Anweisungen (z. B. for-Schleifen) müssen wir mehrere Ganzzahlen als Zählvariablen verwenden. Hier können Sie einfach die drei Buchstaben i, j und k als Variablennamen verwenden. Dies ist eine Gewohnheit, die in der Fortran-Sprache entwickelt und beibehalten wurde und sich als sehr nützlich und leicht verständlich erwiesen hat. Natürlich würden wir bessere Ergebnisse erzielen, wenn wir einen aussagekräftigeren Namen verwenden würden, wie zum Beispiel: MyCounter. Im Allgemeinen reichen die drei Buchstaben i, j und k völlig aus, ansonsten sollten mehr Prozesse oder Funktionen aufgeteilt werden. Hier sind einige Beispiele: 1. SongsList // Zeigt an, dass es sich um eine Liste von Liedern handelt. Song verwendet den Plural, um anzuzeigen, dass es mehr als ein Lied gibt. 2. SetCarColor // Zeigt an, dass es sich um eine Funktion zum Festlegen der Farbe handelt Wenn eine TCar-Klasse definiert ist, wird SetColor in der Klasse als Funktionsmitglied verwendet, um die Farbe des Autos festzulegen. Achten Sie auch auf die Benennung boolescher Variablen. Der Name einer booleschen Variablen sollte die Bedeutung von „Wahr“ und „Falsch“ klar erkennen lassen. Beispielsweise ist die Verwendung von IsFileExisted für eine Variable, die aufzeichnet, ob eine Datei vorhanden ist, besser als die Verwendung von FileExisted. Benennen Sie schließlich niemals eine globale Variable „Temp“ oder „Tmp“, obwohl sie innerhalb einer Prozedur oder Funktion dennoch zulässig ist. Tatsächlich gibt es einige Kontroversen über diese Regel. Einige Codierungsstandards sind strenger, selbst in Prozeduren oder Funktionen. Allerdings ist diese Benennung oft sehr praktisch, insbesondere für Prozeduren oder Funktionen. Wenn es als globale Variable verwendet wird, liegt wahrscheinlich eine Zuweisungsanweisung mit nicht übereinstimmenden Typen vor. Obwohl der Compiler Ihnen zu diesem Zeitpunkt viel Hilfe bietet, ist es schwierig, das Auftreten kleinerer Fehler zu vermeiden. Zusammenfassend lässt sich sagen, dass das Befolgen dieser Regel zu besseren Ergebnissen führt, es sollte jedoch bei Bedarf nichts strikt eingehalten werden. 1.2 Einrückungen und Leerzeichen Zwischen den einzelnen Ebenen sollten zwei Leerzeichen eingefügt werden, um das Programm übersichtlich und übersichtlich zu gestalten. Verwenden Sie niemals Tabulatorzeichen, da es schwierig ist, die Breite von Tabulatorzeichen bei unterschiedlichen Einstellungen und Anwendungen konsistent beizubehalten. Erwarten Sie jedoch nicht, dass Ihr Programm nur in Delphi angezeigt wird. Achten Sie auch auf die Verwendung des Editors. Wenn Sie nur Delphi verwenden, ist dies kein Problem. Wenn Sie auch ein Textverarbeitungsprogramm wie Word verwenden, achten Sie bitte auf die Verwendung geeigneter Schriftarten, um sicherzustellen, dass die Breite jedes Buchstabens und Symbols stimmt das gleiche. . Beim Drucken mit einem Textverarbeitungsprogramm wie Word sollten Sie auch auf die Auswahl der Schriftarten achten. Die Verwendung von Leerzeichen dient auch dazu, das Programm sauber zu halten und es Programmierern zu ermöglichen, die Programmstruktur schnell zu verstehen. Im Folgenden finden Sie einige Spezifikationen und entsprechende Beispiele: 1. Zwischen jedem Wort sollte ein Leerzeichen stehen. Zum Beispiel: for TMyClass = class(TObject)2. Um „=“, „<>“, „>=“ und „<=“ sollte ein Leerzeichen stehen; rechts von „:=“ und „:“ sollte ein Leerzeichen stehen, aber nicht links. Beispiel: Wenn a = b, dann a:= b; Zwischen reservierten Wörtern und Schlüsselwörtern und dem Symbol auf der linken Seite sollte ein Leerzeichen stehen, jedoch nicht zwischen dem Symbol auf der rechten Seite. Beispiel: PROcedure ShowMessage;4. Verwendung von Klammern: Bei der Definition und dem Aufruf von Prozeduren und Funktionen sollten keine Leerzeichen zwischen Klammern und externen Wörtern und Symbolen gelassen werden. Bei der bedingten Beurteilung der if-Anweisung sollten Leerzeichen zwischen reservierten Wörtern wie und und oder verwendet werden. Zum Beispiel: function Exchange(a: integer; b: integer); if (a = b) and ((a = c) or (a = d)) then … end;1.3 margin Delphi editor is about 81st from the right Dort ist eine dunkle Linie links vom Zeichen. Tatsächlich wird das maximierte Fenster unter der Standardschnittstelle von Delphi 4 Buchstaben links von der dunklen Linie angezeigt. Schreiben Sie daher den Quellcode nicht außerhalb der dunklen Zeile, was bedeutet, dass jede Zeile einschließlich führender und mittlerer Leerzeichen 80 Zeichen nicht überschreiten sollte. Wenn die Anweisung zu lang ist, wird der Zeilenumbruch abgeschlossen und der Zeilenumbruch muss um zwei Zeichen eingerückt werden. Dies ist auch einfach zu drucken, und die Teile jenseits der dunklen Linie werden in Delphi nicht gedruckt. Wenn Sie zum Drucken eines Delphi-Programms eine Textverarbeitungssoftware wie Word verwenden, wird der überschüssige Teil an den Anfang der nächsten Zeile verschoben, wodurch das gedruckte Programm schwer lesbar wird. Versuchen Sie daher, alle Anpassungen beim Schreiben des Codes vorzunehmen, und überlassen Sie diese Arbeit nicht dem Drucken. Achten Sie beim Zeilenumbruch auf die Lesbarkeit des Programms und versuchen Sie, den vollständigen Teil beizubehalten. Wenn die Funktion beispielsweise zu lang ist, umschließen Sie eine vollständige Parameterbeschreibung und nicht nur die Datentypdeklaration. Die ersten beiden Schreibweisen unten sind korrekt, und die folgenden Schreibweisen sind falsch: function AdditonFiveInputNumber(a: integer; b: integer; c: integer; d: ineger;e: integer): integer; //Rect function AdditonFiveInputNumber (a: Ganzzahl;b: Ganzzahl;c: Ganzzahl;d: Ganzzahl;e: Ganzzahl): //Korrekte Funktion AdditonFiveInputNumber(a: Ganzzahl; b: Ganzzahl; c: Ganzzahl; d: Ganzzahl; e: Ganzzahl): integer; //Fehlerfunktion AdditonFiveInputNumber(a: Ganzzahl; b: Ganzzahl; c: Ganzzahl; d: Ganzzahl; e: Ganzzahl ): integer; //Fehlerfunktion AdditonFiveInputNumber(a: integer; b: integer; c: integer; d: ineger;e: integer): //Fehler 1.4 Der erste Buchstabe jedes Wortes im benutzerdefinierten Namen muss groß und klein geschrieben sein, und die anderen Buchstaben müssen klein geschrieben sein. Von Delphi reservierte Wörter und Schlüsselwörter sollten alle in Kleinbuchstaben geschrieben werden. Die Schreibmethode vordefinierter Delphi-Funktionen ist dieselbe wie die Schreibmethode benutzerdefinierter Namen. Grundlegende Datentypen in Delphi sollten Kleinbuchstaben sein und die ersten beiden Buchstaben erweiterter Klassentypen sollten großgeschrieben werden (der erste Buchstabe eines Klassentyps ist „T“). Hier sind einige Beispiele: 1. Benutzerdefinierter Name: MyFavouriteSong, CarList; 2. Reservierte Wörter: if (a = b) und ((a = c) oder (a = d)) then … end; ('Alles in Ordnung');4. Typ der Delphi-Erweiterungsklasse: MyStrings = TStrings.Create;1.5 Kommentare Delphi unterstützt zwei Arten von Kommentaren: Blockkommentare ({}) und einzeilige Kommentare (//). Der Zweck von Kommentaren besteht darin, die Designideen des Programms zu erläutern und Programmierern zu helfen, die Ideen des Programms, die vor zwei Jahren oder sogar gestern geschrieben wurden, so schnell wie möglich zu verstehen. Dies dient eigentlich dazu, das Gedächtnisproblem zu lösen. Beim Programmieren sollte man sich nie zu sehr auf das Gehirn verlassen, sondern so oft wie möglich Wörter verwenden. Daher sind Kommentare ein sehr wichtiger Aspekt in Programmiersprachen, obwohl dies vielen Menschen (insbesondere Anfängern, darunter einer beträchtlichen Anzahl von Programmierern) nichts ausmacht und sie selten Kommentare schreiben. Eine weitere Anwendung von Kommentaren findet sich in der Programm-Debugging-Phase. Wenn es beispielsweise zwei Anweisungen gibt und Sie nicht im Voraus wissen, welche besser ist, müssen Sie Folgendes testen: Setzen Sie „//“ vor eine Anweisung (d. h. ändern). Wenn Sie beispielsweise die zu kommentierende Anweisung eingeben, eine weitere Anweisung ausführen und dann das Gegenteil tun, können wir die Wahl leicht treffen. Wenn es sich um eine Gruppe von Anweisungen handelt, verwenden Sie Blockkommentare, aber achten Sie darauf, „{“ und „}“ an auffälligen Positionen zu platzieren, z. B. in getrennten oberen und unteren Zeilen. Im Folgenden sind einige Nutzungsgrundsätze aufgeführt: 1. In den meisten Fällen ist es notwendig, Kommentare vor benutzerdefinierten Variablen und Typen zu platzieren. 2. In den meisten Fällen ist es erforderlich, am Anfang der Einheitendatei einen Kommentar einzufügen. Hier sollte der Kommentar Folgendes enthalten: Dateiname, Erstellungsdatum, Änderungsdatum, Autor, Autor der Änderung und notwendige Beschreibung. 3. Kommentare sollten aussagekräftig sein, verwenden Sie keine nutzlosen Kommentare. Zum Beispiel: while i < 8 dobegin … i:= i + 1; //Add one to iend; der Kommentar „//Add one to i“ ist hier bedeutungslos, es handelt sich natürlich nicht um eine einfache Anweisung (ähnlich wie: i : = i + 1) Es ist kein Kommentar erforderlich. Da einfache Aussagen oft eine sehr wichtige Rolle spielen, sollte die Funktion dieser Aussage hervorgehoben werden, wenn diese Aussage Fragen aufwirft oder schwer verständlich ist. 4. Versuchen Sie nicht, in Kommentaren Monogramme zu erstellen, es sei denn, Sie halten es für absolut notwendig. Weil es sehr schwierig ist, die Anmerkung zu ändern und gleichzeitig das Muster intakt und schön zu halten. . 5. Um temporäre Kommentare von permanenten Kommentaren zu unterscheiden, können Sie mit Ihrer Methode spezielle Symbole in den Kommentaren platzieren. Dies hat den Vorteil, dass es leicht zu finden ist. 6. Änderungen an Anweisungen werden auf entsprechende Kommentare abgebildet. 7. Es sollte eine klare Lücke zwischen Kommentaren und Code bestehen, damit Sie auf einen Blick erkennen können, was eine Anweisung und was ein Kommentar ist. Sie können Kommentare in die Zeile vor oder nach der Codezeile einfügen oder direkt nach dem Code mindestens zwei Leerzeichen lassen. Platzieren Sie den Code jedoch nicht nach dem Kommentar, wenn sich der Code und der Kommentar in derselben Zeile befinden Fügen Sie den Code nicht nach dem Kommentar ein. Kommentare werden in der Mitte des Codes platziert.