http://blogs.wankuma.com/shuujin/archive/2007/02/01/60398.aspxnew したものが delete する。
作った人が責任もって破棄する。
こういう対の考え方はシンプルで非常に有用な考え方だと思う。
で、似たような話のような、別問題のような話ですが、私は Close メソッドが気にいらない。
Close メソッドの存在ではなく、Close が Dispose を呼び出す(それを推奨している)のが非常に気に食わない。
私は、そのようなクラスは Dispose が(あくまで念のため) Close を呼び出すべきだと思う。
まず意味合い。
Dispose は「破棄」、Close は「閉じる」、「閉じる」=「破棄」という考え方が理解できない。
「閉じる」はあくまでも「破棄」のための条件であると思う。
また、Dispose は using のように言語によっては文法レベルでサポートされているように、特殊なメソッドと考えても差し支えないぐらい重要なメソッドだと思う。
それを「文意的に適当だから」とかでかってに差し替えられたらたまらない。混乱するだけだ。
Close は意味どおり、閉じる処理をすればいいのに。
Dispose は new とともにあるべきであり、Close は Open とともにあるべきだと思う。
public interface IOpenable
{
void Open();
void Close();
}いっそのこと、こんなのがあればよかったのにとさえ思う。