「名前」というのはプログラミングをする上で非常に大事だ。
良い名前の変数は何を保持しているのか明確だし、良い名前のメソッドは何を行うのか一目瞭然である。
どういう名前を付けようか迷うパターンを一つ。
「同じメールアドレスが既に登録されていたら、受付はしないので、引数のメールアドレスがまだ存在しない事を確認したい」
という要件。
言葉のまま受け取ると、クライアントが
if( メールアドレスはまだ存在しない )
と使いたいと思い
bool IsNotEntryMailaddress( string mailaddress )
というメソッドを定義する。
私はこれに反対である。何故なら、逆にメールアドレスが存在する事を確認したいとき
if( !IsNotEntryMailaddress( "hoge" ) )
となり、否定に否定を重ねているので意味が伝わりにくい。
最初の要件が「引数のメールアドレスがまだ存在しない事を確認したい」であったとしても、「引数のメールアドレスが存在する事を確認したい」に読み替え
bool IsEntryMailaddress( string mailaddress )
という名前にした方が良いように思う。
簡単な例なので、誰もそんなことしない、と思うかもしれない。
今後、「否定の意」を含む名前をメソッドやプロパティに使おうとしたとき、本当にそれで良いか一呼吸おいてみようと思う。