関数の命名則

関数に名前を付ける場合の命名則を紹介します。

基本的な方針

関数名は一般的には以下の形式で命名を行います。

(動詞) - (目的語) - (付帯条件) - (動詞を修飾する副詞)

例としては

GetActiveElementByIdAsync

の様になります。 関数名からこの関数は ID をキーとしてアクティブなエレメントを非同期に取得する 処理を行うものだと推測されます。 ID やアクティブなエレメントが何を指すのかは使われ方によります。

名前の付け方

基本的には以下の点に気を付けて命名を行います。

  • 正しい英語で記述する
  • 関数の行う処理を過不足なく説明する
  • 不明瞭な (アバウトな) 表現は避ける

これらの条件を満たす関数名を実際につける際に『関数名をそのまま英語から日本語に翻訳した時に、意味が通じ、実際の関数の動作と一致するかどうか?』を目安とすることができます。

ドキュメントコメントを記述する

関数名を和訳すれば、その関数が何を行っているかが分かる文章が手に入るはずです。 そのため、関数に対するドキュメントコメントを先に記述してコメントを元に関数名を決めることもできます。

/// <summary>
/// <para>ID を用いてアクティブな Element を非同期に取得します</para>
/// </summary>
/// <param name="id">ID</param>
Task<Element> GetActiveElementWithIdAsync(int id)

この際の手順は以下の様になります。

  1. 関数に対して、関数が行っていること全てを、正確かつ誤解のない様に日本語のコメントとして書き記します
  2. その日本語のコメントを英訳します

この時に出来上がった英訳は『関数の動作を、全て、正確かつ誤解のない様に』書き記しているはずなので、関数名と一致しているはず。

抽象度に合った名前を付ける

関数の抽象度に合った名前を付け、本質とは関係ない情報を盛り込まない様にします。 例えば、『ファイルパスと文字コードを指定してテキストファイルを開いてファイルの中身を文字列として返す関数』は、実際の処理としては

テキストファイルを開いて、ファイルの内容を読み込み、文字コードを指定して文字列に変換して返すけど、ファイルが開けなかったり、不正な文字コードが指定されていると失敗して例外発生させる関数

ですが、

openTextFileAndReadFileContentAndConvertToStringWithEncodingButThrowErrorWhenFileCouldNotOpenOrGiveInvalidEncoding

という関数名ではなく

readTextFile

で、十分意味が伝わるはずです。

参考資料