メソッド名の命名って悩みますよね。
え?悩んだことないって?そんなあなたは3流プログラマか、でなければネイティブアメリカンである疑いがあります。自分の胸に手を当てて真実を探してください。
それはさておき、自分以外の人が読んでもすぐに意味を理解することが出来て、かつ無駄なく完結でシンプルな名前をつけようとすると、これがなかなか難しい。
説明的なメソッド名にすれば意味は明確になりますが、どっかの言語みたいな感じにやたら長いメソッド名にされると書くのがめんどい。だったら言葉のニュアンスをフル活用して短く簡潔な名前にした方が覚えやすいし使いやすいよねと。
メソッド名についてはIDEで補完されるからウンヌンっていう意見もあるけど、それはそれで別の議論なので置いておくことさせて。
ちなみに、メソッド名を考えるとき、生粋の日本人の語彙力ではなかなかニュアンスまで踏み込んで候補を導きだすのは難しいので、シソーラス類語辞典が激オススメ。
http://ejje.weblio.jp/english-thesaurus/
例えば、検索系処理の命名候補を調べたいなら、search
とかfind
で検索すれば近い意味の単語が調べられます。便利。
類語辞典で調べながら、ぼくの主観のニュアンスを入れてまとめてみました。あくまでも主観なのでニュアンスは間違ってる可能性は十分にある。それから、ぼくはRuby使いなのでRuby的なニュアンスを含んでいるところも結構ありそう。その点了承されたし。
検索・取得系のメソッド名
メソッド名 | ニュアンス |
---|---|
get | オブジェクトから値を取り出す。DB取得など別の場所から情報を取得するときには使わない。 |
fetch | 別の場所から情報を取得する。DB検索や、ネットワーク越しにデータを取得する場合に使用する。 |
search | DBを検索しに行く。検索したい対象が複数件存在する、もしくは存在しない可能性がある。 |
find | DBを検索しに行く。必ず検索したい対象が1件だけ存在する。 |
select | 配列などのコレクション内から条件にマッチするデータを取得する。 |
explore | 蓄積されたデータやコンテンツの中から、傾向や事実を導き出す。 |
lookup | 辞書などで調べるという意味がある。一つの属性から対応する値を求める。 |
送信系のメソッド名
メソッド名 | ニュアンス |
---|---|
send | 送信する。広いニュアンスを含んでいるので意味は曖昧。 |
post | 情報を知らせる。Httpのpostと誤解されるのであまり使わない。 |
deliver | メッセージを届ける。メールやメッセージなどを送信する処理に使う。 |
transport | 別の場所へ運ぶ。受け取ったものを、他の処理に移すときに使う?あまり使ったことがない。 |
変換系のメソッド名
メソッド名 | ニュアンス |
---|---|
convert | データをいずれかの形式に変換する。元のものを別の形式にしたい場合に使う。 |
transform | 見た目を変化させる。変形させる。可視化されているオブジェクトに使うことが多い。 |
exchange | 別のものと交換する。元のものとは別物になる場合に使う。 |
停止系のメソッド名
メソッド名 | ニュアンス |
---|---|
stop | 状態や処理を停止させる。途中再開が出来ない場合に使う。 |
break | 稼働中の処理を一時停止させる。その後再開可能な状態である場合に使う。 |
halt | 状態を一時的に停止させる。処理そのものではなく状態を停止させる場合に使う。再開可能。 |
cancel | 実行中の処理を完了前に終了させる。その後の動作を正常に継続させる場合に使う。 |
invalidate | 状態を更新して、使用できない状態にする。 |
他にもたくさんある
探してみると色々ありましたね。まだまだ他にも悩みがちなパターンはあると思います。今後もメソッド名で悩んだらシソーラス類語辞典に頼ろう。