関数に名前を付ける場合の命名則を紹介します。
関数名は一般的には以下の形式で命名を行います。
(動詞) - (目的語) - (付帯条件) - (動詞を修飾する副詞)
例としては
GetActiveElementByIdAsync
の様になります。 関数名からこの関数は ID をキーとしてアクティブなエレメントを非同期に取得する
処理を行うものだと推測されます。 ID
やアクティブなエレメントが何を指すのかは使われ方によります。
基本的には以下の点に気を付けて命名を行います。
これらの条件を満たす関数名を実際につける際に『関数名をそのまま英語から日本語に翻訳した時に、意味が通じ、実際の関数の動作と一致するかどうか?』を目安とすることができます。
関数名を和訳すれば、その関数が何を行っているかが分かる文章が手に入るはずです。 そのため、関数に対するドキュメントコメントを先に記述してコメントを元に関数名を決めることもできます。
/// <summary>
/// <para>ID を用いてアクティブな Element を非同期に取得します</para>
/// </summary>
/// <param name="id">ID</param>
Task<Element> GetActiveElementWithIdAsync(int id)
この際の手順は以下の様になります。
この時に出来上がった英訳は『関数の動作を、全て、正確かつ誤解のない様に』書き記しているはずなので、関数名と一致しているはず。
関数の抽象度に合った名前を付け、本質とは関係ない情報を盛り込まない様にします。 例えば、『ファイルパスと文字コードを指定してテキストファイルを開いてファイルの中身を文字列として返す関数』は、実際の処理としては
テキストファイルを開いて、ファイルの内容を読み込み、文字コードを指定して文字列に変換して返すけど、ファイルが開けなかったり、不正な文字コードが指定されていると失敗して例外発生させる関数
ですが、
openTextFileAndReadFileContentAndConvertToStringWithEncodingButThrowErrorWhenFileCouldNotOpenOrGiveInvalidEncoding
という関数名ではなく
readTextFile
で、十分意味が伝わるはずです。