せらぴんブログ

サークル「せらぴん」のうのはな透です。やっぱり眼鏡っ娘が好き!!

何も考えない直訳ほどナンセンスな名付けはない

大規模PJでは画面IDを元にクラス名設計をする場合が多々あります。
それはそれで鬱屈とするのですが、それよりも厄介なのが画面名を直訳してクラス名をつける*1というパターン。

この“直訳”というのがミソで、例えば下記のような画面があったとします。

  • ユーザ編集画面
  • ユーザ更新確認画面
  • ユーザ画像設定画面
  • エントリ登録画面
  • エントリ保存更新確認画面
  • コメント新規作成画面

これが、こうなる。

  • EditUserController
  • ConfirmUpdateUserController
  • ConfigureUserImageController
  • RegistEntryController
  • SaveUpdateEntryController
  • NewCreateCommentController

さて、ツッコミどころが何個見つけられたかな?!
おかしいのはクラス名だけでなくて、メソッド名も往々にして悲惨なことになってたりします。例えば、

  • EditUserController#EditUser()

「ユーザ編集画面でユーザ以外の何を編集するんだよ!!」と言わずにはいられないこのセンス。Edit()で十分だと思いませんか。思ってください。あとこういうのも過去に見たけど目眩がした。

  • EditUserController#Save()

なんでわざわざ単語変えるんだ?!
え? ボタン名が「保存ボタン」だからだって?
……そうか、お前がそう思うんなら、そうなんだろうな。

けどこのPJで一番笑えないなぁと思うのは「直訳するときは単語のブレとかがあるといけないからPJ用の単語表を見て対応する単語を使ってね♥」てルールがあるという点に尽きると思う。
その辞書に「保存-Save」「登録-Regist」「設定-Configure」「編集-Edit」「更新-Update」と次々単語が追加されて、それらが機械的に消化されていく。本末転倒とはよくいったものだなぁ……と。

美しい名付けは美しい設計から生まれる

こういう「同じ意味の違う単語が平然と現れる」「メソッド名が過度に説明しすぎ」な名付けっていうのは、余計なことに意識がそれてしまいがちです。
シンプルイズベスト、わかりやすくシンプルな設計をすれば、自ずとクラス名・メソッド名はわかりやすくシンプルなものになるはずなのです。RailsURIなどはその典型です。

クラス名・メソッド名・URI設計。名付けと設計のセンスは磨いておいて損はないですよ。

*1:そもそも“1画面1Controller”の時点で、Struts時代に引きずられているということで、出発点からしてすでに……。