最近ついに仕事でもgitが使われ始めた。プルリクしてからmasterにマージする流れは、やってみれば便利なもので、なんといってもコードレビューが流れに組み込まれているのが良いと思う。
で、チェックしていると、group_user.htmlとGroup_userController.javaというようなファイルがAddされていた。気持ちはとてもよくわかるのだが、クラス名で色々な区切りがあるのはよくないだろう、また区切り入れる必要なければ入れないほうがいいよなー、ということで修正することに。/group/user.htmlとGroupUserController.java。
案外ちゃんと考えることがないよなぁということで、大文字小文字、ハイフン、アンダースコア区切りについて備忘録も兼ねてまとめる。
統一されていない
今回問題となったのは、group_user.htmlとGroup_userController.javaというようなファイル名である。どうしてこうなったのかというと、以下のような流れらしい。
- まずgroup-user.htmlを作る
- htmlのファイル名に合わせて、コントローラとしてGroup-userController.javaを作る
- Javaのクラス名にハイフンは使えないのでGroup_userController.javaにする
- 合わせてhtmlもgroup_user.htmlにする
気持ちはわかる。。。
とりあえず、Group_userContoller.javaはまずかろう。区切り方には色々あれど、統一されていないのはよろしくない。Javaは基本大文字小文字なのだし、少なくともクラス名はGroupUserController.javaだろう、ということで一致。
色々な区切り方
一方、htmlのgroup_user.htmlは、これ単体だけ見て、特に悪いということはないとは思う。今回は、他に区切りがあるファイルもなかったし。ただ、どんな区切り方が良いのかは難しいところだ。
単語の区切り方はいくつかある。
- 大文字小文字…camelCase(キャメルケース)、PascalCase(パスカルケース)
- ハイフン…spinal-case, chain-case(スパイナルケース、チェインケース)
- アンダースコア…snake_case(スネークケース)
Javaはクラスはパスカルケース、メソッドなんかはキャメルケースが基本で、JavaScriptなんかもメソッドはキャメルケースであることが多い。html名としてはスパイナルケースが一番多いように思うけれど(このサイトも基本そう)、スネークケースも使われる。TwitterのAPIなんかはスネークケースだ。
区切り方については、Web API: The Good Partsという書籍で、Web APIのリソース名における単語の区切り方について考察されているけれど、正解といえるものはない、というのが実情のようだ。書籍においては、迷ったらハイフンが無難とある。そして、最もよいのは単語をつなぎ合わせることを極力避けること、とも。そのほうが見やすくなることが多い、と。
今回作っていたのはいわゆるWeb APIというわけではないのだが、考え方としては参考になる。実際、今回のケースでは/group/userとしてそもそも階層構造を作ったほうが、開発する側としてもわかりやすく、管理もしやすいと思われた。
で、結局/group/userがよさげだね、ということで落ち着いた。
とどのつまりはケース・バイ・ケースということなのだろうけれど、管理する側にとっても、見る側にとってもわかりやすくしようとしていれば、まぁあまりおかしなことにはならないだろうと思う。一番は統一されていることだ。
参考
Web API: The Good Parts
コメント