5

現在、PSR-2 と PSR-4 をフォローしています。いくつかのクラスに名前を付けようとすると、小さなジレンマに陥ります。これが例です。

ベース REST クライアント があり\Vendor\RestClient\AbstractClientます。この抽象クライアントの 2 つの実装があります。

  • \Vendor\GoogleClient\GoogleClient
  • \Vendor\GithubClient\GithubClient

名前空間がすでにドメインを指定しているため、クライアント クラスの命名は冗長ですか? 代わりにクラスに名前を付ける必要があります:

  • \Vendor\GoogleClient\Client
  • \Vendor\GithubClient\Client

これは、クライアント コードが常に次のようなものを使用することを意味します。

use Vendor\GoogleClient\Client;

$client = new Client();

これは、以下よりも少し冗長です。

use Vendor\GoogleClient\GoogleClient;

$client = new GoogleClient();

しかし、最初のオプションでは、use ステートメントを変更するだけで実装を簡単に交換できます。

PSR4 では、と の接尾辞と接頭辞をそれぞれ付ける必要があることInterfacesを指定していますが、ドメイン固有の接頭辞/接尾辞については何も述べていません。意見や提案はありますか?AbstractClassesInterfaceAbstract

4

2 に答える 2

12

PSR にはこれに関する命名規則がないため、これは完全にあなた次第です。しかし、あなたの決定のために心に留めておかなければならないことは、

  • \Vendor\GoogleClient\Client
  • \Vendor\GithubClient\Client

両方を同時に使用したい ( を使用use)

use Vendor\GoogleClient\Client;
use Vendor\GithubClient\Client;

$client = new Client();

は一意ではないため、エラーが発生しますClient

もちろん、一度にそれらを使用することもできます

use Vendor\GoogleClient\Client as GoogleClient;
use Vendor\GithubClient\Client as GithubClient;

$client1 = new GoogleClient();
$client2 = new GithubClient();

またはuse好きなし

$client1 = new Vendor\GoogleClient\Client();
$client2 = new Vendor\GithubClient\Client();

しかし、プログラマーが自分のコードでクライアントを 1 行で簡単に切り替えることができるように計画している場合は、

use Vendor\GoogleClient\Client;
$client = new Client();

use Vendor\GithubClient\Client;
$client = new Client();

new GoogleClient()これは、すべてのステートメントを変更するよりもはるかに簡単ですnew GithubClient()

結論
この決定は、あなた自身のニーズと好みに大きく依存することがわかります。どちらが良いかはご自身で判断してください。

于 2016-01-08T09:23:09.053 に答える
5

注意として、以下を使用してリファクタリングすることも検討してください。

  • \Vendor\Client\Google
  • \Vendor\Client\GitHub

論理は次のとおりです。

多くの場合、これは不可能であると言われています。

于 2018-02-12T21:53:54.250 に答える