1流の嗜み!シンプルなメソッド名を上手くつけるための簡単な10のルール

  • Pocket

英文法-300x199

プログラマーなら、メソッドを書き終わりいざ名前をつけようと思ったとき困った経験があるはずです。他の人が書いたプログラムを見ても、その名前の付け方は人それぞれ。もちろん正解があるわけではありません。しかし保守性や可読性を考えると、他の人から見てもわかりやすい名前をつけることがとても大切です。今回は皆様に、できる限りシンプルに、そして、わかりやすい名前をつけるための鉄則をご紹介します。

基本的な英語の文法を守る

英文法

存在するかを確認するメソッドを書くとき、「IsExist」と書いてしまう方をよくみかけますが、「Exist」は動詞です。したがって「IsExist」は英文法として間違っています。「IsExisting」など、英文法としても正しくなるように命名しましょう。プログラマーに英語は必須ではありませんが、グローバルで戦うのであればある程度の英文法の勉強しておきましょう。

1つの動詞もしくは動詞+目的語

メソッドは手段なので基本的には動詞で始めましょう。「SoundPlay」、と書くのではなく「PlaySound」と書くべきです。「音再生」ではなく「音を再生する」としましょう。真偽値を戻す関数の場合は「Is○○○」などの疑問文にする場合がありますが、基本的には動詞(+目的語)とするべきです。

「and」などの接続詞でつなげない

メソッドを書いていると、ときおり複雑な機能を持つようになってしまいがちです。シンプルな設計を保つためにも基本的には1メソッド1機能という考え方を持ちましょう。しかし、「and」などの接続詞でつなげてしまうと必然的に複数の機能が入ってしまっていることが考えられます。たとえば「CalculateAndShowData」ような名前だと、「Calculate(計算する)」機能と「ShowData(データを表示する)」機能の2つを持ってしまっていることを示しています。関数名を意識すると同時にメソッドの機能についても見直した方が良いかもしれませんね。

オブジェクト名を主語にして違和感がないかを確認する

メソッドはその持ち主であるクラスや構造体などのオブジェクトが主体となって働くものです。それを意識して名前をつけましょう。「Car」という名前のクラスがあり、「Move」という名前のメソッドがあれば、続けて読むと「Car Move」となり、文章として読んでもあまり違和感はありません。メソッド名は主体となるオブジェクトが何をするか、という視点で決めるとより読みやすくなるでしょう。もし違和感を感じるようだと、他のプログラマーにとっても読みにくくなってしまっている可能性があります。

返す型を考える

普段の会話の中で、「いくつですか?」と聞かれて「いいえ」と答える人はいないでしょう。プログラムも同じです。たずねている型と戻り値の整合性がとれるようにメソッドの目的語を決めましょう。「動いているかどうか」の真偽値を返すメソッドを作りたいのであれば、「IsMoving」というように頭のIsを付けた疑問文形のメソッド名にします。何かの数字を返すメソッドにしたいのであれば、「GetCount」のように、返す目的語を数字(この場合はCount)にします。

一般的な命名の慣習を覚えておく

慣習

メソッドの命名法は、プログラマーの間である程度慣習として広まっているものがあります。もっとも端的な例はGetter/Setter(Get○○○メソッドとSet○○○メソッド) です。また、動詞の対義語なども一般的なルールがあります。これらのルールを頭に入れておきましょう。

プログラムにおける役割を考える

メソッドはそれぞれプログラムにおいて異なる役割を持っています。コールバックや非同期用、持ち主となるオブジェクトのライフサイクルを扱うもの、データを扱うものなど、役割はさまざまです。これらの役割によってもメソッド名の付け方は異なります。コールバック用であれば接頭文字として「On」をつけます。非同期メソッドであれば接尾文字として「Async」をつけます。このようなルールも学習しておきましょう。

記法を統一する

メソッド名の書き方としてさまざまな記法があります。この記法を統一しましょう。プログラミング言語の種類によっても慣習が異なりますし、好みも異なります。メソッドであれば単語と単語の区切りを明確にするために、キャメル記法かもしくはスネーク記法を使って書くのが一般的です。またプロジェクト内にルールがある場合は確認しておきましょう。

機能の抽象度を明確にする

メソッドの機能はどこまで影響力を持つのか。それを考えてなるべく具体的にしましょう。たとえば、あなたが絵を描くためのメソッドとして「DrawPicture」と命名した場合、それは適切な名前でしょうか?もっと具体的な名前にできないでしょうか?絵を描くといっても、線を引くだけであれば「DrawLine」にして具体性を上げられます。色を塗るだけであれば「Paint」とすることもできるのです。逆にもしこの2つの機能を内包し組み合わせている関数であれば、「DrawPicture」という名前が抽象度として適切なのです。

 使う側の視点に立つ

プロジェクトでは自分だけではなく他の人もそのメソッドを使う可能性があります。客観的に自分の作ったメソッドを見て明確に機能や役割を理解できるか見直しましょう。初めてそのメソッドを見た人が、中身の実装を見ることなく名前だけでその機能を理解することができたら十分わかりやすくなっていると言えるでしょう。

将棋

いかがでしょうか。いろいろと挙げましたが一番大切なのはこれらのルールに関わらず自分で俯瞰して、直観的にわかりやすい名前を付けられているかどうかです。あなたが書いたメソッドを多くの人に使ってもらうためにも、もう一頑張りしてわかりやすい名前をつけてあげましょう。

【ソフトバンク携帯のりかえでどこよりも高いキャッシュバックを保証します!】
【ソフトバンクのiPhoneⅩ、iPhone8、スマホを購入したい方はこちら】
【auのiPhoneⅩ、iPhone8、スマホを購入したい方はこちら】
【ドコモのiPhoneⅩ、iPhone8、スマホを購入したい方はこちら】

販売店比較早見表

店舗名

                                           詳細

おとくケータイ.net

キャッシュバック最高額を保証してくれます

  • オンライン完結でテナント費がない分、キャッシュバック金額が大きい
  • webだけではなく電話やメールで相談もできるので安心
  • キャッシュバック最高額を保証してくれる
  • ソフトバンクに乗り換えるなら最もお得

ソフトバンクオンラインショップ

ドコモオンラインショップ

au Online Shop

キャリア公式オンラインショップ

  • 各キャリア公式のためiPhoneⅩ、iPhone8含め人気機種の在庫が豊富
  • 24時間対応でオンライン完結のため時間をとられない
  • オンラインショップ限定キャンペーンもあり、プランも自由に選べるため料金を安くできる
  • キャリアを乗り換えない機種変更なら一番お得

ソフトバンクショップ, auショップ, ドコモショップ

  • 不要なオプション加入など営業をされる
  • キャッシュバックは出ない場合が多い
  • 混雑しているため非常に時間がかかることがある
  • 店員の質にばらつきがある
  • Pocket