プログラミング基礎

 クラスをラップするというのは悪い考えであり、DSLを作ろうというのは最悪の考えだ。

 同じことを二度書いたほうがコードが読みやすくなるならば同じことを二度書くべきだ。本質的に違うことを共通のコードが多いからという理由で一つの関数にまとめてはいけない。

 抽象化のために必要でないならば、カプセル化はするべきではない。あるメンバにアクセスできなくするためだけに抽象化階層を作るべきではない。IListにAddやRemoveがありreadonly版や配列専用版がないのはなぜか良く考えた方がいい。

 メンバが多すぎてわけが分からなくなることはあるが、使ってはいけないメンバを間違って使ってしまうことはない。配列はいつでもsetしたり入れ替えたり出来るが、やる奴はいないのでAsReadonlyする必要はない。

 パフォーマンスのことを気にする必要はない。パフォーマンスが問題になった場合は、その機能の実装を諦めて簡単に出来る機能に置き換えるのがよい。