18

抽象クラスには常に接頭辞Abstractと接尾辞を付ける必要がありますInterface(インターフェースの場合)? フォルダー構造/名前空間の PSR-0 に似ていますが、クラスの標準命名規則はありますか?

言語にはまさにこの目的のためのリテラル キーワードがあるため、冗長に思えます。

abstract class AbstractFoo {}

interface InterfaceFoo {}

trait TraitFoo {}
4

7 に答える 7

18

慣例はありませんが、それぞれのコンポーネントにAbstract接頭辞と接尾辞を使用することをお勧めします。Interfaceコードを一目で理解するのに役立ちます、IMO。

于 2012-11-26T11:55:59.013 に答える
10

これには慣例はありません。特にPHPでは。これはすべて、好きなように整理できます。

PHP 5.3に名前空間が追加されたため、実際のクラス名にプレフィックス/サフィックスを追加しAbstractたり、プレフィックス/サフィックスを追加したりする必要はありません。Interface

名前をそのまま付けてください。

于 2012-11-26T11:43:01.230 に答える
4

インターフェース:

インターフェイスには Interface: という接尾辞を付ける必要がありますe.g. Psr\Foo\BarInterface


抽象クラス:

抽象クラスには、Abstract: をプレフィックスとして付ける必要がありますe.g. Psr\Foo\AbstractBar


特徴

Traits には Trait: という接尾辞を付ける必要がありますe.g. Psr\Foo\BarTrait


ソース: https://www.php-fig.org/bylaws/psr-naming-conventions/

于 2021-04-27T10:29:12.363 に答える
3

以下を使用して、抽象クラスとインターフェイスに名前を付けます。

  • 概要*
  • *インターフェース

何がプロトタイプで、何がコントラクトで、何が具体的な実装であるか、コードベースをクリーンで素晴らしく、チームにとって明白に保ちます。

命名規則は、どのような状況でも生産性を向上させるためにあるため、「好きな名前を付ける」ことは良い考えとは言えません。

FIG グループは抽象クラスとインターフェースの命名規則を提案していませんが、主要なオープン ソース PHP プロジェクトを調べると、ほとんどすべてのプロジェクトがこの規則を使用していることがわかります。

于 2015-01-29T14:52:10.017 に答える
1

規約とは、あなたがそれらをどのように見ているかです: 言語自体は、パーサーがコードを読み取れるようにする規約以外の規約を強制しません。基本的に、特定のプロジェクト、またはすべてのプロジェクトに対して独自に規約を設定する必要があります。ただし、さまざまな人々のチームで作業すると、規則が守られない可能性があります。それは本当にプログラマーに依存します。

私の経験から、「契約による設計」のようなものに従うことをお勧めします。実装クラスに名前を付けるのと同じように、コントラクト (インターフェイス) に名前を付けてから、実装に具体的な名前を付けます (または、主に Java で知られている MyContractNameImpl にフォールバックします)。また、多くの最新の IDE は、クラスがインターフェイスか抽象かを認識しているため、それを名前に含める必要はまったくありません。同じ理由で、「IMyContract」のような名前のコントラクトもあまり良くありません。

于 2012-11-26T12:02:39.710 に答える