投稿数 - 437, コメント - 59540, トラックバック - 156

名前

「名前」というのはプログラミングをする上で非常に大事だ。
良い名前の変数は何を保持しているのか明確だし、良い名前のメソッドは何を行うのか一目瞭然である。

どういう名前を付けようか迷うパターンを一つ。
「同じメールアドレスが既に登録されていたら、受付はしないので、引数のメールアドレスがまだ存在しない事を確認したい」
という要件。

言葉のまま受け取ると、クライアントが

if( メールアドレスはまだ存在しない )
と使いたいと思い
bool IsNotEntryMailaddress( string mailaddress )
というメソッドを定義する。

私はこれに反対である。何故なら、逆にメールアドレスが存在する事を確認したいとき

if( !IsNotEntryMailaddress( "hoge" ) )
となり、否定に否定を重ねているので意味が伝わりにくい。

最初の要件が「引数のメールアドレスがまだ存在しない事を確認したい」であったとしても、「引数のメールアドレスが存在する事を確認したい」に読み替え

bool IsEntryMailaddress( string mailaddress )
という名前にした方が良いように思う。

簡単な例なので、誰もそんなことしない、と思うかもしれない。
今後、「否定の意」を含む名前をメソッドやプロパティに使おうとしたとき、本当にそれで良いか一呼吸おいてみようと思う。

投稿日時 : 2005年11月18日 19:16

フィードバック

# re: 名前

ですね。(^^)
Is、Has、Can などの 2 値を表すメソッドや変数は、
否定を true にするのはおかしいです。

if ( HasMailAddress("hoge") ) {

}

if ( !HasMailAddress("hoge") ) {

}

見やすいですよね。
2005/11/20 12:13 | じゃんぬ

# re: 名前

やられた~^^;
HasMailAddress()
こちらの方が、より良い「名前」ですね。
2005/11/20 14:21 | 囚人

# re: 名前

Has、Can、Exists、Valid などを多用しますw
2005/11/21 10:50 | じゃんぬ

コメントの投稿

タイトル
名前
URL
コメント