慣習¶
コーディング規約では、Symfony2 プロジェクト、およびフレームワーク内部やサードパーティのバンドル向けのコーディング規約について説明しています。 このドキュメントでは、フレームワークのコアの一貫性を保ち、コーディング時により推測しやすくするために採用している慣習について説明します。 この慣習は、自分のプロジェクトに採用することもできますが、Symfony2 を使う上で必須というわけではありません。
メソッド名¶
オブジェクトが、”対象物(オブジェクト、パラメータなど)” に対して “メインの” 複数の関係がある場合、次のような一般化したメソッド名を使います。
- get()
- set()
- has()
- all()
- replace()
- remove()
- clear()
- isEmpty()
- add()
- register()
- count()
- keys()
これらのメソッドは、明確にメインの関係がある場合にのみ使います。
- CookieJar には多数の Cookie があります。
- サービスの Container には多数のサービスとパラメータがあります。 サービスがメインの関係なので、メソッドの命名にこの慣習を使っています。
- コンソールの Input には多数の引数とオプションがあります。 しかし、”メイン” の関係ではないため、メソッドの命名にこの慣習は適用していません。
多数の関係を持つメソッドで、この慣習を適用しないものについては、次のようなメソッド名にしてください(XXXは対象物の名前です)
メインの関係 | 他の関係 |
---|---|
get() | getXXX() |
set() | setXXX() |
n/a | replaceXXX() |
has() | hasXXX() |
all() | getXXXs() |
replace() | setXXXs() |
remove() | removeXXX() |
clear() | clearXXX() |
isEmpty() | isEmptyXXX() |
add() | addXXX() |
register() | registerXXX() |
count() | countXXX() |
keys() | n/a |
Note
“setXXX” と “”replaceXXX” は非常に似ているようですが、1つ重要な違いが あります。 “setXXX” は関係に対して新しい要素で置き換えたり追加したり できます。一方、 “replaceXXX” は新しい要素を追加するのは明確に 禁じられており、このような時には多くの場合例外が投げられます。