Manche Gedanken über Entwicklungsgewohnheiten haben das Gefühl, dass sie einem im Hals stecken bleiben und man sie nicht ausspucken kann. Wenn ich mir die Motivation für den Beitrag anschaue, schließe ich natürlich nicht aus, dass es zu einem Betrug an Teilnahmepunkten kommt, aber andererseits hoffe ich auch, ein paar Anregungen oder Hinweise für Mitpraktizierende (Nian Xing) zu geben (ich hoffe, ich führe nicht in die Irre). andere). Gleichzeitig hoffe ich auch, dass Sie Ihre Meinung zu diesen meinen schlechten Gewohnheiten äußern und Kritik und Korrekturen vorbringen können. Danke.
eins. Projektverzeichnis erstellen
Der erste Schritt besteht natürlich darin, ein eigenes Verzeichnis für das neue Projekt zu erstellen (nicht lachen). Der Verzeichnisname muss den gleichen Namen wie der Projektname haben, es kann aber auch ein anderer Name verwendet werden, sofern dieser klar und prägnant ist. Erstellen Sie dann jedes der folgenden Verzeichnisse innerhalb dieses Verzeichnisses:
<Doc>: dient zum Speichern von Entwicklungsdokumenten im Zusammenhang mit dem Projekt (Anforderungsbeschreibung, Entwurfsskizze, detailliertes Design usw.);
<Quelle>: Wird zum Speichern von „.DPR“, „.Pas“, „.Dfm“ und anderen Dateien im Delphi-Quellprogramm verwendet;
<Dcu>: „.Dcu“-Dateien werden in diesem Verzeichnis gespeichert. Der Zweck der getrennten Speicherung von „.Pas“- und „.Dcu“-Dateien besteht lediglich darin, den Inhalt des Quellverzeichnisses klarer zu machen;
<Bin>: Speichert die Ausgabedateien des Projekts, z. B. „.Exe“, „.Dll“ oder „.Ocx“ usw.;
<Log>: Wird zum Speichern von Protokolldateien verwendet. Normalerweise lege ich in diesem Verzeichnis eine Datei „<Projektname>Programmer Log.Txt“ ab.
<Bilder>: Natürlich ist es das Verzeichnis, in dem die im Projekt verwendeten Bilder gespeichert werden. Unter normalen Umständen ist dieses Verzeichnis unverzichtbar. Wenn auch andere Ressourcen verwendet werden, erstellen Sie auch eigene Verzeichnisse, z. B. Wav, Avi usw.
zwei. Legen Sie Projektoptionen fest
Erstellen Sie ein neues Projekt in Delphi, speichern Sie dieses Projekt im Quellverzeichnis und gehen Sie gleichzeitig wie folgt vor:
a. Wählen Sie als Symbol für dieses Projekt ein Symbol aus, das ins Auge fällt und einen gewissen Bezug zum Projekt hat. Natürlich darf dieses Symbol nur vorübergehend verwendet werden, aber es muss besser sein als das hässliche, das Delphi standardmäßig verwendet. Wie können Sie sonst Ihrer selbst würdig sein?
b. Legen Sie das Ausgabeverzeichnis auf der Seite „Projektoptionen -> Verzeichnisse/Bedingungen“ auf das Bin-Verzeichnis fest.
c. Legen Sie das Unit-Ausgabeverzeichnis auf das Dcu-Verzeichnis fest.
drei. Konstante Einheit hinzufügen
Fügen Sie eine neue Unit hinzu und speichern Sie sie als „unt<Projektname> Consts.Pas“, um die im Projekt verwendeten Konstanten zu speichern.
Vier. Über Form und Einheit
Benennen Sie das Formular gemäß der ungarischen Namenskonvention. Ein zum Anmelden verwendetes Formular kann „FrmLogin“ heißen und sein Einheitenname kann „untLogin“ lauten. Im Allgemeinen sollten die Namen zweier entsprechender Formen und Einheiten bis auf die Abkürzung „Frm“ oder „unt“ konsistent sein.
Fügen Sie am Kopf der Einheit einen Kommentar hinzu. Das Format des Kommentars sollte sich auf den Zeitpunkt der letzten Änderung beziehen. Änderungshistorie usw.
Legen Sie die Beschriftung des neu erstellten Formulars auf den Namen der Formularklasse fest, anstatt den Standardtitel von Delphi zu verwenden. Nachdem wir beispielsweise „Form1“ in „FrmLogin“ umbenannt haben, erhalten wir die neue Formularklasse TFrmLogin, und Delphi aktualisiert die Beschriftung des Formulars automatisch auf „FrmLogin“. Meiner Meinung nach sollte die Überschrift „TFrmLogin“ lauten, da wir eine Formularklasse TFrmLogin entwerfen und nicht nur mit FrmLogin arbeiten.
Bei einer Formularklasse mit klaren Funktionen wie TFrmLogin haben viele Leute die Angewohnheit, während der Entwurfsphase die Beschriftung auf einen Namen wie „Operator Login“ festzulegen. Ich habe die Angewohnheit, dass Konstanten wie „Operator Login“ normalerweise in unt<Projektname>Consts.Pas gespeichert und mit ResourceString oder Const definiert werden. Die Benennung der Beschriftung des Formulars sollte eine Laufzeitaufgabe sein. Daher betreibe ich Caption oft nur, wenn das TForm.OnCreate-Ereignis ausgelöst wird, wie zum Beispiel:
procedure TFrmLogin.FormCreate(Sender: TObject);
beginnen
Bildunterschrift := csLoginTitle;
....
Ende;
fünf. Informationen zur Verwendung der Formatfunktion
Es gibt drei Daten: iYear, iMonth und iDay, um Informationen wie „Geburtstag: 18.03.1976“ anzuzeigen. Verwenden Sie s := 'Birthday:'+IntToStr(iYear)+'.'+IntToStr(iMonth)+'.'+IntToStr(iDay);? Das ist wirklich anstrengend. Meine Angewohnheit ist es, eine Konstante csBirthDayFormat = 'Birthday: %d/%d/%d' in unt<project name>Consts.Pas hinzuzufügen, um das Anzeigeformat zu speichern, und dann s := Format(csBirthDayFormat, [iYear, iMonth , iDay]); Solche Anweisungen vervollständigen die Zusammenstellung der Daten. Der Vorteil liegt auf der Hand, dass Sie das Anzeigeformat der Daten nur an einer Stelle verwalten müssen.
Die Formatierungsfunktion ist leistungsstark und ich kann sie wärmstens empfehlen. Was ist mit Ihnen?
sechs. Informationen zur Speicherung von Registrierungs- oder Ini-Dateien
Ursprünglich habe ich normalerweise TRegistry verwendet, um auf die Registrierung zuzugreifen, und TIniFile, um auf Ini-Dateien zuzugreifen. Die Verwendung dieser beiden Klassen ist unterschiedlich, sodass es nahezu unmöglich ist, denselben Code für den Zugriff sowohl auf die Registrierung als auch auf die Ini-Datei zu verwenden. Was für Kopfschmerzen!
Endlich habe ich einen Retter gefunden! Es ist die TRegistryIniFile-Klasse. Wenn wir uns die Registrierungseinheit ansehen, stellen wir fest, dass TRegistryIniFile von TCusomIniFile erbt. TIniFile erbt auch von TCusomIniFile. Daher bedeutet die Verwendung der abstrakten Klasse TCusomIniFile, um Zugriff auf die Registrierung oder Ini-Datei zu erhalten, zwei Fliegen mit einer Klappe zu schlagen. Zum Beispiel:
var
csmIniFile:TCusomIniFile;
beginnen
if blUseIniFile then//Wenn Ini-Datei verwendet wird
csmIniFile:= TIniFile.Create(csRootKey)
anders
csmIniFile:= TRegistryIniFile.Create(csRootKey);
//Dann können Sie mit csmIniFile auf die Ini-Datei zugreifen.
//Oder greifen Sie auf ähnliche Weise auf die Registrierung zu wie auf die Ini-Datei.
Sieben. Über TStream-Streams und TFileStream, TMemoryStream usw.
Sowohl TFileStream als auch TMemoryStream erben von der abstrakten Klasse TStream, was bedeutet, dass wir eine Reihe von Codes verwenden können, um Zugriffsvorgänge auf Dateien und Speicher abzuschließen. Daher neige ich beim Definieren einiger Schnittstellen dazu, die Parametertypen als abstrakte Klassen und nicht als konkrete Klassen zu definieren. Beispielsweise ist eine Funktion zum Abschließen der Speicherfunktion definiert als
Funktion Save(AStream: TStream): Boolean;
als definiert als
Funktion Save(AStream: TFileStream): Boolean;
Seien Sie viel flexibler.
Die frühere Definition ist zukunftsweisend, da sie auf neue Arten von Flüssen angewendet werden kann, die möglicherweise in der Zukunft auftreten. Die letztere Definition gilt nur für Streams wie TFileStream (natürlich einschließlich Unterklassen von TFileStream), die viel strenger sind.
Meine Angewohnheit: Wenn es eine abstrakte Klasse gibt, versuchen Sie, die Parameter als Typ der abstrakten Klasse zu definieren. Schließlich können wir die Zukunft nicht vorhersagen.
acht. Verwenden Sie TAction häufiger
Ab Delphi 4 wurde das Aktionskonzept eingeführt und die TActionList-Komponente zur Standardkomponentenleiste hinzugefügt. Der Vorteil der Verwendung von Action besteht darin, dass die Sorgen um die Synchronisierung des Steuerungsstatus entfallen!
Weitere Artikel
Musicwind®@HangZhou.Zj.China