メソッドの名前の付け方で悩む

ユーザを管理するクラスを作るときに、
ユーザの登録と削除をするメソッドの名前を考えいてふと思った。
entry の対義語って何だろう?
(どうやら exit のようです。)


そしてその疑問をチャットで友人にぶつけているうちに、
メソッドの名前の付け方全般について気になりだした。
こういうときはこの名前を付けるっていうの、
命名規則っていうのかな?規則とはちょっと違うな。
なんていうか、理想的な名前の付け方っていうのが気になりだしてしまったのだ。
よく使う名前とその利用例、あとその対義語なんかがまとめてあると、
プログラムを書くときに便利なんじゃないかなぁと思った。

オーバーロードからみるJavaRubyのメソッドの名付け方の違い

それと、その話から派生して、
Rubyオーバーロードはあるのか?って話になった。
満足せる豚。眠たげなポチ。:Rubyでオーバーロード話続き。を見て、
Rubyにはオーバーロードが実装されていないことが分かった。


Javaだとクラスを名詞、メソッドを動詞、引数を目的語に対応させるのが、
いいメソッドの名前を作る条件の一つのようだ。
でもRubyの場合、オーバーロードが使えないがために、
メソッドと引数を、動詞と目的語の関係にキレイに分離できないときがある。
例えば、Javaでは

  • Controller.add(User user)
  • Controller.add(Persion person)

とするところを、Rubyでは

  • Controller.add_user(user)
  • Controller.add_person(person)

としなくてはならない。


Javaでは、オーバーロードを使って、
別々の引数を取れる2つのaddを作ることができるけど、
Rubyではそれができないので、
引数の違いではなく、メソッドの名前の違いで分けなくてはならないのだ。
これは、オーバーロードがないからというよりも、
型がないからという方が理由としては正しいのかもしれない。
言語のちょっとした違いを比較してみると、
色々考えることが出てくるので面白い(・∀・)