URL設計 画面のURLの命名規則を決めよう Controller名は名詞!で、単数形?複数形?
Controller名は主語!
Controllerが主語、Actionが動詞であればそのURLは
/Controller名 / Action名 は S(主語)V(動詞)の関係になります。
オブジェクト指向プログラミングでいうところのクラス名、メソッド名も主語、動詞の関係ですよね。
実際に、MVCフレームワークではController名はクラス名、Action名はメソッド名になるので、やはり主語、動詞の関係であるべきです。
Action名については別記事で考察します。
Controller名は主語なんだから名詞!
はい、名詞を使ってください。
- /beatiful(形容詞)/web
- /directly(副詞)/access
- /go(動詞)/home
おかしいですよね。
Controller名は単数形なの?複数形なの?
名詞の集合は単数形か複数形か、DB設計でも議論になります。
同じように、URL設計でもよく議論になります。
今の流行に乗るならば複数形がいいと思います。
理由としては下の二つのURLを考えてみてください。
- /users
- /users/1234 (/users?id=1234)
/usersの方はaction名ユーザ一覧を表すとします。
/users/1234はユーザ一覧にて、ユーザIDが指定されたと考えることができます。
DBのテーブルに置き換えてみてください。
usersはテーブルです。つまり集合です。
- /users は select * from users; を表します。
- /users/1234 (/users?id=1234) は select * from users where id=1234 を表します。
※DBのテーブルの複数形についてはORMとの相性などもあり、単数形が好まれることもあります。
結局、単数形、複数形どっちなの
Webサイトとしての要件を満たせるのか満たせないのか、という観点でいうと、どっちでもいいです。
DBのテーブル名のルールと統一すると分かりやすくなるでしょう。DBが複数形ならURLも複数形!
命名規則なんて宗教論争です。
宗教論争は無駄です。(絶対に結論が出ない)
無駄な宗教論争を回避するためにルールを決めるのです!
開発あるある(勝手にルールを変える)
立ち上げの初代エンジニアは単数形で設計しました。規約にも単数形にしてます。と明記していました。
それを引き継いだ2代目エンジニアが、
「なんで単数形なの?普通複数形だろ。。。。」
とぼやき始めます。単数形の規約を削除しました。
複数形2代目が追加したURLはすべて複数形になってしまいました。
それを引き継いだ3代目エンジニア
「なんで統一されてないんじゃーーー!!!」
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ルールを決めたら守りましょう。