ルール1:クラスごとにユニットを作成する(1クラス1ユニット)
常に次の点に留意してください。クラスのプライベート (PRivate) 部分と保護された (保護された) 部分は、他のユニットのクラスとプロシージャからのみ隠蔽されます。したがって、効果的なカプセル化が必要な場合は、各 A クラスが異なるユニットを使用するようにする必要があります。他のクラスから継承するクラスなど、一部の単純なクラスでは、共有ユニットを使用できます。ただし、同じユニットを共有するクラスの数は制限されています。単純なユニットに 20 を超える複雑なクラスを含めないでください。
ルール 2: コンポーネントに名前を付ける
コンポーネントにわかりやすい名前を使用することも重要です。最も一般的な名前の付け方は、クラスの小文字とコンポーネントの機能 (BtnAdd や editName など) で始めることです。
ルール 3: イベントに名前を付ける
イベント処理メソッドに適切な名前を付けることがさらに重要です。コンポーネントに適切な名前を付けると、システムのデフォルト名 ButtonClick は BtnAddClick になります。このイベントハンドラーの機能は名前から推測できますが、Delphi が付けた名前を使用するよりも、メソッドの機能を説明する名前を使用する方が良いと思います。たとえば、BtnAdd ボタンの OnClick イベントには、AddToList という名前を付けることができます。これにより、特にクラスの他のメソッドでイベント ハンドラーを呼び出す場合に、プログラムが読みやすくなり、プログラマが同様のイベントまたは異なるコンポーネントに対して同じメソッドを選択するのに役立ちます。
ルール 4: フォーム メソッドを使用する
フォームはクラスであるため、フォームのコードはメソッドごとに編成されます。イベント ハンドラーをフォームに追加でき、これらのハンドラーは特別な機能を実行し、他のメソッドから呼び出すことができます。イベント処理メソッドに加えて、アクションを完了するための特別に定義されたメソッドやフォームの状態にアクセスするためのメソッドをフォームに追加できます。他のフォームがそのコンポーネントを直接操作するよりも、他のフォームが呼び出せるようにいくつかのパブリック (Public) メソッドをフォームに追加する方が良いでしょう。
ルール 5: フォーム コンストラクターの追加
実行時に作成される 2 番目のフォームは、既定のコンストラクター (Tcomponent クラスから継承) に加えて特別なコンストラクターを提供します。
Create メソッドをオーバーロードし、必要な初期化パラメータを追加することをお勧めします。特定のコードは次のコードにあります。
公共
コンストラクター Create(Text:string): オーバーロードを再導入します。
コンストラクター TformDialog.Create(Text:string);
始める
継承された Create(アプリケーション);
Edit1.Text:=テキスト;
終わり;
ルール 6: グローバル変数を避ける
グローバル変数 (ユニットのインターフェイス セクションで定義された変数) は避けてください。以下に、これを行う方法に関するいくつかの提案を示します。
フォームに追加データを保存する必要がある場合は、フォーム クラスにプライベート データを追加できます。この場合、各フォーム インスタンスにはデータの独自のコピーが存在します。ユニット変数 (ユニットの実装セクションで定義された変数) を使用して、フォーム クラスの複数のインスタンスで共有されるデータを宣言できます。
異なる種類のフォーム間でデータを共有する必要がある場合は、メイン フォームで定義して共有を実現するか、グローバル変数を使用したり、メソッドやプロパティを使用してデータを取得したりできます。
ルール 7: Tform1 クラス内で Form1 を使用しない
クラスのメソッドでは特定のオブジェクト名を使用しないでください。つまり、TForm1 クラスのメソッドで Form1 を直接使用しないでください。現在のオブジェクトを使用する必要がある場合は、Self キーワードを使用できます。
ルール 11: コンポーネントのプロパティを公開する
別のフォームの状態にアクセスする必要がある場合、そのコンポーネントに直接アクセスしないでください。これは、他のフォームまたは他のクラスのコードをユーザー インターフェイスと組み合わせるため、ユーザー インターフェイスは多くの場合、アプリケーションの中で最も変更可能な部分であるためです。最良の方法は、アクセスする必要があるコンポーネント プロパティのフォーム プロパティを定義することです。これを実現するには、Get メソッドを使用してコンポーネントのステータスを読み取り、Set メソッドを使用してコンポーネントのステータスを設定します。
ユーザー インターフェイスを変更して、既存のコンポーネントを別のコンポーネントに置き換える必要がある場合は、このコンポーネントのプロパティに関連する Get メソッドと Set メソッドを変更するだけでよく、必要なすべてのフォームを検索して変更する必要はありません。このコンポーネントとクラスのソースコードを参照してください。詳細な実装方法については、以下のコードを参照してください。
プライベート
関数 GetText:String;
プロシージャ SetText(const Value:String);
公共
プロパティ テキスト:文字列;
GetText を読み取り SetText を書き込みます。
関数 TformDialog.GetText:String;
始める
結果:=Edit1.Text;
終わり;
プロシージャ TformDialog.SetText(const Value:String);
始める
Edit1.Text;=値;
終わり;
ルール 16: ビジュアルフォームの継承
正しく適用すれば、これは強力なツールとなる可能性があります。私の経験によれば、開発するプロジェクトが大規模であればあるほど、その価値は高くなります。複雑なプログラムでは、さまざまなフォーム階層を使用して、関連するフォームのグループ内の多態性を処理できます。
ビジュアル フォームの継承により、複数のフォームの一部の共通アクションを共有できます。共有メソッド、共通プロパティ、さらにはイベント ハンドラー、コンポーネント、コンポーネント プロパティ、コンポーネント イベント処理メソッドなどを使用できます。
詳細については、http://lincosoft.go.nease.net/ を参照してください。