web-dev-qa-db-ja.com

「public static」または「static public」?

PHPの関数宣言キーワードに関するマイナーなポイント:静的なクラスメソッドがある場合、staticキーワードが可視性キーワードの前または後にある必要があります(publicprotectedprivate)?すべてのメソッド(静的またはそれ以外)に可視性キーワードがあると仮定すると、可視性キーワードをfunctionキーワードに対して同じ場所に維持したいとします。

public function foo() {}

public function bar() {}

protected function baz() {}

private function quux() {}

ここで、カップルが静的なふりをします。

public function foo() {}

static public function bar() {}

protected function baz() {}

static private function quux() {}

また、メソッドが静的である場合は、それをfirstに見せる必要があります。これは、visibilityキーワードよりもメソッドの種類に大きな影響を与えるためです。

これは明らかに機能性やデザインへの影響がないため、厳密に可読性の問題です。 (私が考えることができること。)

43
dirtside

PSR-2から:

すべてのプロパティとメソッドで可視性を宣言する必要があります。 abstractおよびfinalは、可視性の前に宣言する必要があります。 staticは可視性の後に宣言する必要があります。 [参照]

... PHP Framework Interop Groupの標準と規約に関心がある場合。

そう public staticないstatic public彼らによれば。

48

JavaおよびC#のような言語では、アクセス修飾子が最初に来る必要があります。編集:前に打った行は完全に偽です。どちらの言語にもこの要件はありません。


public static

私には正しいようです。両方のアプローチについて議論することができます。私の場合は次のとおりです。「静的」は、アクセス修飾子ではなく関数を修飾するので、言う方が理にかなっています。

<access_modifier> static

これを他の方法で使用すると、「静的」の意味が明確ではなくなります。

45
Andrew Hare

さらに Alexei Tenitskiの回答

I prefer static public since this way 
it is easier to spot [usually rare] static methods in classes.

すべてのメソッドで、可視性を指定する必要があります。したがって、すべてのメソッドは、定義のどこかに言及されていることを知っています。唯一の問題は、「どちらの設定ですか」です。

静的なものは一部のみです。そのため、それぞれについて、「定義のどこかに静的なキーワードについての言及はありますか?」と尋ねる必要があります。そのため、その質問への答えをより明確にするために、最初にstaticを配置します。

または、より広い規則として、…………私は「最も異常な側面を最初に」する傾向があるので、無意識のうちにそれらを読み飛ばさないようにしています。 ; o)

このテストを試してください。

非常に迅速に...クラスAには静的メソッドがいくつありますか?

class A {
 public static methodA() {
  }
 protected static methodB() {
  }
 private staticlymethodC() {
  } 
}

クラスBには静的メソッドがいくつありますか?

class B {
 public methodA() {
  }
 static protected methodB() {
  }
 static private methodC() {
  } 
}

クラスBの方が早く理解しやすいと思います。

10
JW.

これは厳密にPHP=の質問だとは思わないので、少しだけ価値があるため、可視性修飾子を最初に配置することの一貫性を常に優先しました。スキャンする方が簡単だと思います。

9
Greg D

私は、タイプ修飾子を持つ、使用するすべての言語で可視性を最優先します。

5
chaos

static publicこれにより、クラス内の静的メソッド(通常はまれ)を見つけやすくなります。

5
Alexei Tenitski

それはコードに影響を与えないという点で正しいです。したがって、あなたが何をするかは、あなた自身のスタイル要件、またはあなたのチームの要件次第です。彼らと相談して、スタイルについて合意してください。

自分だけでコーディングする場合は、自分で選択する必要があります。選択は重要ではありませんが、一貫性は重要です。

あなたが尋ねる可能性のある別の質問は、「公開」を使用するべきかどうかです。後方互換性のため(PHP4には情報が隠されていませんでした)、可視性修飾子のないものはデフォルトでpublicです。公開されている場合は、公開することを気にする必要がありますか?繰り返しますが、個人的な選択です。どちらにせよ強力な議論をしてください。

個人的には、自分のコードを調べてクリーンアップするとき、可視性修飾子を最初に置き、それがパブリックであっても指定するようにします。

1
thomasrutter