拡張機能の名前付けガイドライン
高レベルのガイダンス: 接頭語を使用して競合数を削減し、識別を向上させる
モデル要素に名前を付ける
モデル内のすべての要素は、インストール時にすべてのモデルで一意の名前が必要です。 ただし、インストール時に、すべてのモデルの名前がわからず、モデルが一緒にインストールされる場合があります。 この状況に対応するには、すべての要素名に、ソリューション固有の接頭辞を含める必要があります。 モデルの要素に名前を付ける場合にこの接頭語を含めることで、名前の競合のリスクを大幅に軽減します。
- モデルに複数のソリューションが含まれている場合は、さまざまな接頭語によって、モデルでは、各ソリューションを識別できます。
- 他の関係者からの他のモデルがそれらの要素に同じ接頭語を使用するリスクを最小限する接頭語を慎重に選択する必要があります。
他のモデル内の機能を拡張するとき、拡張される要素には接頭語がすでに含まれています。 ただし、拡張要素に接頭語を追加しません。名前には複数の連続した接頭語が含まれるようにします。 代わりに、拡張要素の名前を付けるときに、接頭語またはその他の語句、省略形をインフィックスとして含める必要があります。
拡張機能に名前を付ける
拡張要素は、テーブル拡張子、ビュー拡張子、またはフォーム拡張子など、他のモデルの拡張子と競合のリスクを最小限にする一意の名前を付ける必要があります。 競合のリスクを最小限に抑えるために、名前には、拡張機能を他のモデル内の同じ要素の他の拡張機能と区別するための用語、省略形、または接中辞が含まれている必要があります。
- 拡張子要素があるモデルの名前、または拡張子が関連付けられている接頭語のいずれかを含めます。 たとえば、ウェアハウジング モジュールは HCMWorker テーブルを拡張し、他のすべての要素の名前で WHS 接頭語を使用します。 この場合、拡張機能に HCMWorker.WHSExtension という名前が付けられます。 モジュール内の他の要素に名前を付けるために使用される接頭語が、接中辞として挿入されることを確認します。 別の例として、拡張子が ContosoCustomizations モデルからの ContactPerson テーブルへのすべての拡張機能を含むことを意図している場合、ContosoCustomizations モデルの ContactPerson テーブルの拡張子は、ContactPerson.ContosoCustomizations という名前が付けられます。 開発者ツールでは、モデル名が既に一意である必要があるので、既定でモデルの名前が拡張名として使用されます。
- 拡張子名を <Element that is being extended>.Extension としないでください。 たとえば、競合のリスクが大きすぎるため、InventLocation テーブルの拡張クラスには、InventLocation.Extension という名前を付ける必要はありません。
拡張クラスの名前を付ける
テーブル、クラス、または他の要素のロジックを拡張するために使用される拡張子クラスは、すべてのモデルとタイプの間で一意の名前が必要です。 可能であれば、拡張クラスには、拡張されているタイプの名前を含める必要があります。 ただし、名前には、用語、省略形、またはクラスを他のタイプと区別する接頭語も含まれる必要があります。
- 拡張クラスの名前を強化される型の名前で開始し、_Extension という用語で名前を終了します。 したがって、ContactPerson テーブルを拡張する拡張クラスは、ContactPerson という名前で始まり、_Extension で終わる必要があります。 たとえば、1 つの拡張クラスに ContactPersonWHS_Extension という名前が付けられます。
- 拡張子要素があるモデルの名前、または拡張子が関連付けられている接頭語のいずれかを含めます。 たとえば、ウェアハウジング モジュールは ContactPerson テーブルを拡張する拡張クラスを使用し、他のすべての要素の名前で WHS 接頭語を使用します。 この場合、拡張クラスに ContactPersonWHS_Extension という名前が付けられます。 モジュール内の他の要素に名前を付けるために使用される接頭語が、接中辞として挿入されることを確認します。 別の例として、拡張クラスがアプリケーション スイート モデルの ContactPerson テーブルのすべての拡張機能を含むことを意図している場合、アプリケーション スイート モデルの ContactPerson テーブル を増補する拡張クラスは、ContactPersonApplicationSuite_Extension という名前が付けられます。
- コードで宣言できない要素のクラス拡張を作成する場合は、追加の要素タイプ情報を追加を検討します (Forms、DataSources、FormControls など)。 たとえば、CustTableFormWHS_Extension は CustTable フォームの拡張です。
- 拡張子名を <Element that is being extended>_Extension としないでください。 たとえば、競合のリスクが大きすぎるため、InventLocation テーブルを補強する拡張クラスには、InventLocation_Extension という名前を付ける必要はありません。
拡張で追加されるフィールド、フィールド グループ、インデックス、関係、およびメタデータ要素に名前を付ける
拡張で追加されるフィールド、フィールド グループ、インデックス、関係、およびメタデータ要素は、拡張される要素およびその他の拡張要素の両方で一意である名前を持っている必要があります。 したがって、モデル間での競合のリスクを最小化する接頭辞をこれらのアーティファクトに含める必要があります。 また、これらのアーティファクトは、容易に理解できるように、わかりやすい用語と省略形にすることが必要です。
- メタデータ ノードの名前の先頭に接頭語、用語、または省略形を含めます。 たとえば、承認する作業者の外部キー フィールドはテーブルの拡張機能の一部として追加され、WHS はホスト モデル内の他の要素に専用である接頭語の 1 つです。 この場合、フィールドに WHSApprovingWorker という名前が付けられます。
拡張クラスに追加される変数およびメソッドの名前を付ける
拡張クラスに追加される変数およびメソッドは、拡張される型、および同じ型を拡張するその他の拡張クラスの両方で一意の名前を持つ必要があります。 変数およびメソッドに対して、一意で判読可能な名前を作成するように注意する必要があります。 一意の名前を作成できない場合は、モデル間の競合のリスクを最小限に抑えるために接頭辞を適用する必要があります。
変数およびメソッドに対して、一意で判読可能な名前を作成します。 たとえば、機能の領域が一部のローカル倉庫拡張機能のサポートに関連している場合、承認する作業者のクラス レベルの変数には、approvingWorkerForLocalWarehouse という名前が付けられます。 機能の同一領域に対する approveWork メソッドには、approveWorkForLocalWarehouse という名前が付けられます。
一意で判読可能な名前を作成できない場合は、メンバー変数またはメソッド名の先頭で、接頭語、用語、または略語を追加します。 たとえば、WHS がモデル内の他の要素で使用される接頭語の 1 つである場合、承認する作業者のクラス レベルの変数には、whsApprovingWorker という名前が付けられます。 WHS がホスティング モデルでその他の要素によって使用される接頭語の 1 つである場合、approveWork メソッドには whsApproveWork という名前が付けられます。
複数の拡張が同じ用語を使用している可能性、または将来のリリースで基本機能が同じ名前で拡張されるリスクが高いため、一般名は避けてください。 衝突する可能性が高い名前の例としては、承認者、遅延、グループ化、ルックアップ、プロセスなどがあります。