大文字小文字区切り、ハイフン区切り、アンダースコア区切り

最近ついに仕事でもgitが使われ始めた。プルリクしてからmasterにマージする流れは、やってみれば便利なもので、なんといってもコードレビューが流れに組み込まれているのが良いと思う。

で、チェックしていると、group_user.htmlとGroup_userController.javaというようなファイルがAddされていた。気持ちはとてもよくわかるのだが、クラス名で色々な区切りがあるのはよくないだろう、また区切り入れる必要なければ入れないほうがいいよなー、ということで修正することに。/group/user.htmlとGroupUserController.java。

案外ちゃんと考えることがないよなぁということで、大文字小文字、ハイフン、アンダースコア区切りについて備忘録も兼ねてまとめる。

スポンサーリンク

統一されていない

今回問題となったのは、group_user.htmlとGroup_userController.javaというようなファイル名である。どうしてこうなったのかというと、以下のような流れらしい。

  1. まずgroup-user.htmlを作る
  2. htmlのファイル名に合わせて、コントローラとしてGroup-userController.javaを作る
  3. Javaのクラス名にハイフンは使えないのでGroup_userController.javaにする
  4. 合わせてhtmlもgroup_user.htmlにする

気持ちはわかる。。。

とりあえず、Group_userContoller.javaはまずかろう。区切り方には色々あれど、統一されていないのはよろしくない。Javaは基本大文字小文字なのだし、少なくともクラス名はGroupUserController.javaだろう、ということで一致。

色々な区切り方

一方、htmlのgroup_user.htmlは、これ単体だけ見て、特に悪いということはないとは思う。今回は、他に区切りがあるファイルもなかったし。ただ、どんな区切り方が良いのかは難しいところだ。

単語の区切り方はいくつかある。

  • 大文字小文字…CamelCase(キャメルケース)
  • ハイフン…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

関連コンテンツ

関連記事

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。