(jp) =
これは中括弧または中括弧です。 {
.
句読点として使用されることはめったにありませんが、プログラミング言語で最もよく使用される記号の 1 つであり、コードをグループ化し、スコープを作成するために使用されます。 これは、コード スタイルに関して最も議論されているトピックの 1 つでもあります。
質問は簡単です。左中括弧を新しい行に置くべきかどうかです。 あなたは思うかもしれません:それはすべて個人的な好みです。 しかし、そうではありません。
このコード スニペットを見てください。
public function __construct(string $publicDirectory, string $configurationFile, PageParser $pageParser, PageRenderer $pageRenderer)
いくつかの引数を取るコンストラクタです。 では、このコードの何が問題なのですか? まず第一に、おそらく横にスクロールして読む必要があります。 それは悪いことです。 スクロールには、コードとの追加の対話が必要です。 このメソッドの引数に関する情報を意識的に検索する必要があります。 その時間は、アプリケーション コードに集中できなくなります。
2 つ目は、Web 開発に携わっている人なら、人々がテキストを読むのではなくスキャンすることをご存知でしょう。 通常、左から右、上から下です。 これは特に Web サイトに当てはまりますが、コードの読み取りについても同じことが言えます。 重要な情報を右側に配置すると、見つけにくくなります。
この引数リストの場合、すべての引数が等しく重要です。 しかし、多くの有用な情報は、デフォルトでは焦点が当てられていない右側のぼやけた側にプッシュされます。
では、有用な情報をより左側に引き出すにはどうすればよいでしょうか。
public function __construct(string $publicDirectory,
string $configurationFile,
PageParser $pageParser,
PageRenderer $pageRenderer)
これは、最初に考える解決策かもしれません。 しかし、実際にはスケーリングしません。 メソッド名をリファクタリングするとすぐに、アライメントが崩れます。 これを通常のコンストラクターではなく静的コンストラクターにしたいとします。
public static function create(string $publicDirectory,
string $configurationFile,
PageParser $pageParser,
PageRenderer $pageRenderer)
アライメントが壊れているのがわかりますか?
もう 1 つの問題は、引数がまだかなり右に押し出されていることです。 そこで、別のアプローチを見てみましょう。
public function __construct(
string $publicDirectory, string $configurationFile,
PageParser $pageParser, PageRenderer $pageRenderer)
ここでの利点は、アライメントの問題が解決されることです。 しかし、1 行にいくつの引数を入れる必要があるかをどのように決定しますか? これについてスタイリングのガイドラインを作成していただけますか? それらをどのように実施しますか? この例には 4 つの引数がありますが、3 つまたは 5 つある場合はどうなるでしょうか。
public function __construct(
string $publicDirectory, string $configurationFile,
string $cachePath, PageParser $pageParser,
PageRenderer $pageRenderer)
一貫性が重要です。 一貫したルールを見つけることができれば、もう考える必要はありません。 前に言ったように、それについて考える必要がなければ、頭の中にもっと重要なことを考える余地があります。
それでは、一貫性の検索を続けましょう。
public function __construct(
string $publicDirectory,
string $configurationFile,
PageParser $pageParser,
PageRenderer $pageRenderer)
$this->publicDirectory = rtrim($publicDirectory, "https://stitcher.io/");
$this->configurationFile = $configurationFile;
$this->pageParser = $pageParser;
$this->pageRenderer = $pageRenderer;
各引数に独自の行を与えることで、すべての問題を解決します。 ただし、新しいものも作成しました。引数リストとメソッド本体を区別するのがより難しくなりました。
私はあなたのためにそれを説明することができます. このコードのすべての文字を X に置き換えましょう。
XXXXXX XXXXXXXX __XXXXXXXXX(
XXXXXX XXXXXXXXXXXXXXXX,
XXXXXX XXXXXXXXXXXXXXXXXX,
XXXXXXXXXX XXXXXXXXXXX,
XXXXXXXXXXXX XXXXXXXXXXXXX)
XXXXXXXXXXXXXXXXXXXXXX = XXXXXXXXXXXXXXXXXXXXXXXXXXXX;
XXXXXXXXXXXXXXXXXXXXXXXX = XXXXXXXXXXXXXXXXXX;
XXXXXXXXXXXXXXXXX = XXXXXXXXXXX;
XXXXXXXXXXXXXXXXXXX = XXXXXXXXXXXXX;
引数リストがどこで終わり、メソッド本体がどこで始まるかを見つけるのがいかに難しくなるかわかりますか?
「終わりを示す中括弧が右側にまだある」と言うかもしれません。 しかし、私たちの焦点はそこではありません! 重要な情報は左側に残しておきます。 どうすれば解決できますか? 中括弧を配置する場所が 1 つあります。
XXXXXX XXXXXXXX __XXXXXXXXX(
XXXXXX XXXXXXXXXXXXXXXX,
XXXXXX XXXXXXXXXXXXXXXXXX,
XXXXXXXXXX XXXXXXXXXXX,
XXXXXXXXXXXX XXXXXXXXXXXXX
)
XXXXXXXXXXXXXXXXXXXXXX = XXXXXXXXXXXXXXXXXXXXXXXXXXXX;
XXXXXXXXXXXXXXXXXXXXXXXX = XXXXXXXXXXXXXXXXXX;
XXXXXXXXXXXXXXXXX = XXXXXXXXXXX;
XXXXXXXXXXXXXXXXXXX = XXXXXXXXXXXXX;
新しい行で。 新しい行に中括弧を配置すると、コードに息を吹き込むスペースができます。 引数リストとメソッド本体の間に視覚的な境界を作成し、重要なことに集中するのに役立ちます。
public function __construct(
string $publicDirectory,
string $configurationFile,
PageParser $pageParser,
PageRenderer $pageRenderer
)
$this->publicDirectory = rtrim($publicDirectory, "https://stitcher.io/");
$this->configurationFile = $configurationFile;
$this->pageParser = $pageParser;
$this->pageRenderer = $pageRenderer;