Regel 1: Erstellen Sie eine Einheit für jede Klasse (Eine Klasse, eine Einheit)
Bedenken Sie immer Folgendes: Die privaten (PRivate) und geschützten (geschützten) Teile einer Klasse sind nur vor Klassen und Prozeduren in anderen Einheiten verborgen. Wenn Sie daher eine effektive Kapselung wünschen, sollten Sie dafür sorgen, dass jede A-Klasse eine andere Einheit verwendet. Für einige einfache Klassen, beispielsweise solche, die von anderen Klassen erben, können Sie eine gemeinsam genutzte Einheit verwenden. Allerdings ist die Anzahl der Klassen, die dieselbe Einheit teilen, begrenzt: Platzieren Sie nicht mehr als 20 komplexe Klassen in einer einfachen Einheit
Regel 2: Komponenten benennen
Es ist auch wichtig, beschreibende Namen für Komponenten zu verwenden. Die gebräuchlichste Art der Benennung besteht darin, mit einem Kleinbuchstaben der Klasse und der Funktion der Komponente zu beginnen, z. B. BtnAdd oder editName.
Regel 3: Benennen Sie Ereignisse
Umso wichtiger ist es, Event-Handling-Methoden geeignete Namen zu geben. Wenn Sie der Komponente einen geeigneten Namen geben, wird der Systemstandardname ButtonClick zu BtnAddClick. Obwohl wir die Funktion dieses Event-Handlers anhand des Namens erraten können, halte ich es für eine bessere Möglichkeit, einen Namen zu verwenden, der beschreibt, was die Methode tut, als einen von Delphi angehängten Namen zu verwenden. Beispielsweise kann das OnClick-Ereignis der BtnAdd-Schaltfläche AddToList heißen. Dadurch wird Ihr Programm besser lesbar, insbesondere wenn Sie den Event-Handler in anderen Methoden der Klasse aufrufen, und es hilft Programmierern, dieselbe Methode für ähnliche Ereignisse oder verschiedene Komponenten auszuwählen.
Regel 4: Verwenden Sie Formularmethoden
Formulare sind Klassen, daher ist der Code des Formulars nach Methoden organisiert. Sie können einem Formular Ereignishandler hinzufügen, die spezielle Funktionen ausführen und von anderen Methoden aufgerufen werden können. Zusätzlich zu den Methoden zur Ereignisbehandlung können Sie einem Formular speziell definierte Methoden zum Abschließen von Aktionen und Methoden zum Zugreifen auf den Formularstatus hinzufügen. Es ist besser, dem Formular einige öffentliche (öffentliche) Methoden hinzuzufügen, damit andere Formulare sie aufrufen können, als dass andere Formulare ihre Komponenten direkt bedienen.
Regel 5: Formularkonstruktoren hinzufügen
Das zweite zur Laufzeit erstellte Formular stellt zusätzlich zu einem Standardkonstruktor (geerbt von der Tcomponent-Klasse) spezielle Konstruktoren bereit.
Ich schlage vor, dass Sie die Create-Methode überladen und die erforderlichen Initialisierungsparameter hinzufügen. Der spezifische Code ist im folgenden Code zu finden:
Öffentlich
Konstruktor Create(Text:string): erneut einführen;
Konstruktor TformDialog.Create(Text:string);
Beginnen
Geerbt Create(application);
Edit1.Text:=Text;
Ende;
Regel 6: Vermeiden Sie globale Variablen
Globale Variablen (die im Schnittstellenabschnitt einer Einheit definiert sind) sollten vermieden werden. Nachfolgend finden Sie einige Vorschläge dazu.
Wenn Sie zusätzliche Daten für ein Formular speichern müssen, können Sie der Formularklasse einige private Daten hinzufügen. In diesem Fall verfügt jede Formularinstanz über eine eigene Kopie der Daten. Sie können Unit-Variablen (im Implementierungsabschnitt der Unit definierte Variablen) verwenden, um Daten zu deklarieren, die von mehreren Instanzen einer Formularklasse gemeinsam genutzt werden.
Wenn Sie Daten zwischen verschiedenen Formulartypen teilen müssen, können Sie diese im Hauptformular definieren, um eine gemeinsame Nutzung zu erreichen, oder eine globale Variable verwenden und Methoden oder Eigenschaften verwenden, um Daten abzurufen.
Regel 7: Verwenden Sie Form1 niemals innerhalb der Tform1-Klasse
Sie sollten die Verwendung eines bestimmten Objektnamens in den Methoden der Klasse vermeiden. Mit anderen Worten: Sie sollten Form1 nicht direkt in den Methoden der TForm1-Klasse verwenden. Wenn Sie wirklich das aktuelle Objekt verwenden müssen, können Sie das Schlüsselwort Self verwenden.
Regel 11: Komponenteneigenschaften offenlegen
Wenn Sie auf den Status eines anderen Formulars zugreifen müssen, sollten Sie nicht direkt auf dessen Komponenten zugreifen. Denn dadurch wird der Code anderer Formulare oder anderer Klassen mit der Benutzeroberfläche kombiniert, und die Benutzeroberfläche ist oft der am stärksten veränderbare Teil einer Anwendung. Der beste Ansatz besteht darin, eine Formulareigenschaft für die Komponenteneigenschaft zu definieren, auf die Sie zugreifen müssen. Um dies zu erreichen, können Sie die Get-Methode verwenden, um den Komponentenstatus auszulesen, und die Set-Methode, um den Komponentenstatus festzulegen.
Wenn Sie nun die Benutzeroberfläche ändern und eine vorhandene Komponente durch eine andere ersetzen müssen, müssen Sie lediglich die Get-Methode und die Set-Methode in Bezug auf die Eigenschaften dieser Komponente ändern, ohne alle Formulare dafür suchen und ändern zu müssen Verweisen Sie auf diese Komponente und den Quellcode der Klasse. Detaillierte Implementierungsmethoden finden Sie im folgenden Code:
Privat
Funktion GetText:String;
procedure SetText(const Value:String);
öffentlich
Eigenschaft Text:String;
GetText lesen, SetText schreiben;
Funktion TformDialog.GetText:String;
beginnen
Ergebnis:=Edit1.Text;
Ende;
procedure TformDialog.SetText(const Value:String);
beginnen
Edit1.Text;=Wert;
Ende;
Regel 16: Vererbung visueller Formen
Bei richtiger Anwendung kann dies ein leistungsstarkes Werkzeug sein. Meiner Erfahrung nach gilt: Je größer das Projekt, das man entwickelt, desto wertvoller ist es. In einem komplexen Programm können Sie unterschiedliche Formularhierarchien verwenden, um Polymorphismus in einer Gruppe verwandter Formulare zu behandeln.
Durch die visuelle Formularvererbung können Sie einige gemeinsame Aktionen mehrerer Formulare gemeinsam nutzen: Sie können gemeinsam genutzte Methoden, gemeinsame Eigenschaften, sogar Ereignishandler, Komponenten, Komponenteneigenschaften, Komponentenereignisbehandlungsmethoden usw. verwenden.
Weitere Informationen finden Sie unter: http://lincosoft.go.nease.net/