抽象クラスには常に接頭辞Abstract
と接尾辞を付ける必要がありますInterface
(インターフェースの場合)? フォルダー構造/名前空間の PSR-0 に似ていますが、クラスの標準命名規則はありますか?
言語にはまさにこの目的のためのリテラル キーワードがあるため、冗長に思えます。
abstract class AbstractFoo {}
interface InterfaceFoo {}
trait TraitFoo {}
抽象クラスには常に接頭辞Abstract
と接尾辞を付ける必要がありますInterface
(インターフェースの場合)? フォルダー構造/名前空間の PSR-0 に似ていますが、クラスの標準命名規則はありますか?
言語にはまさにこの目的のためのリテラル キーワードがあるため、冗長に思えます。
abstract class AbstractFoo {}
interface InterfaceFoo {}
trait TraitFoo {}
慣例はありませんが、それぞれのコンポーネントにAbstract
接頭辞と接尾辞を使用することをお勧めします。Interface
コードを一目で理解するのに役立ちます、IMO。
これには慣例はありません。特にPHPでは。これはすべて、好きなように整理できます。
PHP 5.3に名前空間が追加されたため、実際のクラス名にプレフィックス/サフィックスを追加しAbstract
たり、プレフィックス/サフィックスを追加したりする必要はありません。Interface
名前をそのまま付けてください。
インターフェイスには Interface: という接尾辞を付ける必要がありますe.g. Psr\Foo\BarInterface
。
抽象クラスには、Abstract: をプレフィックスとして付ける必要がありますe.g. Psr\Foo\AbstractBar
。
Traits には Trait: という接尾辞を付ける必要がありますe.g. Psr\Foo\BarTrait
。
以下を使用して、抽象クラスとインターフェイスに名前を付けます。
何がプロトタイプで、何がコントラクトで、何が具体的な実装であるか、コードベースをクリーンで素晴らしく、チームにとって明白に保ちます。
命名規則は、どのような状況でも生産性を向上させるためにあるため、「好きな名前を付ける」ことは良い考えとは言えません。
FIG グループは抽象クラスとインターフェースの命名規則を提案していませんが、主要なオープン ソース PHP プロジェクトを調べると、ほとんどすべてのプロジェクトがこの規則を使用していることがわかります。
規約とは、あなたがそれらをどのように見ているかです: 言語自体は、パーサーがコードを読み取れるようにする規約以外の規約を強制しません。基本的に、特定のプロジェクト、またはすべてのプロジェクトに対して独自に規約を設定する必要があります。ただし、さまざまな人々のチームで作業すると、規則が守られない可能性があります。それは本当にプログラマーに依存します。
私の経験から、「契約による設計」のようなものに従うことをお勧めします。実装クラスに名前を付けるのと同じように、コントラクト (インターフェイス) に名前を付けてから、実装に具体的な名前を付けます (または、主に Java で知られている MyContractNameImpl にフォールバックします)。また、多くの最新の IDE は、クラスがインターフェイスか抽象かを認識しているため、それを名前に含める必要はまったくありません。同じ理由で、「IMyContract」のような名前のコントラクトもあまり良くありません。