自分で書いたコードの欠点はなかなか見つからなくても、他人が書いたコードの欠点は嫌という程目に付く。プログラマの目というものは全くもって都合が良い。
どうも他人が書いたメソッドの動詞の意味が逆のような気がしてしょうがない時がある。簡単な例で言えば、Set~、Get~ という類のメソッド名。
呼び出し側のオブジェクトが主語、呼び出し先のオブジェクトが目的語だと私は思っているので、Set~ というメソッド名があれば、メソッドを定義しているオブジェクトに何かを設定するんだなと思う。反対に Get~ は、メソッドを定義しているオブジェクトから何かを取得すると思う。
しかし、よく見かけるのが「Set~ は、メソッドを定義しているオブジェクトが何かを設定する(言い方を変えると、オブジェクトから何かを取得する)」「Get~ は、メソッドを定義しているオブジェクトが何かを取得する(言い方を変えると、オブジェクトに何かを設定する)」という意味になっているコードだ。意味が逆なので、とても気持ち悪い。
但し、Public なメソッドではなく Private なメソッドにその傾向が多い。Public なメソッドは私の考えている意味になっていて、Private なメソッドの場合は逆になるというのは、Private なメソッドの場合は、メソッドを定義しているオブジェクトが主語になるからだろうけど、それってデファクトスタンダード? アクセス修飾子の違いで主語がコロコロ変わると混乱するんだが。でも、Private なメソッドに関しては、主語はそうならざるを得ない、という気持ちも分からないでもない。まぁ一概には言えないのかな。
※追記 - 気持ち悪い(と私が思っている)コード例
// ビュー
class UI
{
// データソースの値を取得してビューに設定しちゃうよ的メソッド
private void GetData()
{
this.TextBox1.Text = DataSource.GetData();
}
// ビューの値をデータソースに設定しちゃうよ的メソッド
private void SetData()
{
DataSource.SetData(this.TextBox1.Text);
}
}