C#の好きでない命名規則
GetEnumerator()の話が出てきたついでに、C#の好きでない命名規則について書いておこうと思います。
これもすごく好き嫌いの問題とは思いますが、ファクトリクラスにおいて、Java などである
- 常に同じインスタンスを返すようなパターンでは getInstance() (専用ファクトリ*1の場合) あるいは getXXX() (複数の種類のクラスを取り扱うファクトリの場合) というメソッド名にする。
- 呼び出しの度に新しいインスタンスを生成して返すようなパターンでは createInstance() あるいは createXXX() というメソッド名にする。
という暗黙の約束を気に入っていたのですが*2 、C# では GetXXX() という名称が好まれているようです。
C# は getter があるので C# の中だけでは混乱することはないのかもしれませんが、これは言語というよりセマンティクスに拠る命名規則なので、踏襲してほしかったなと思う次第。