命名規則

 インテリセンスはアルファベット順でそこに入れられるものを全て表示している。でもほとんどは要らないクラスだ。要るクラスを抽出する方法が必要だと思う。

 とりあえず自作クラスにはプリフィックスにzとつけている。zはデフォルトだと名前がかぶるクラスが一つも無い。zと一文字打つと自作クラスが抽出される。これは必要なクラスである割合が非常に高い。これは俺が必要なdllしか参照せず、dllを細かく細かく分けているからだ。自分の作ったクラスの名前がはっきり思い出せないことがあるのでなかなか便利だ。

 名前空間はaで始めている。俺は名前空間名を忘れやすい。aと打つとすぐ出てくるので便利だ。フレームワーク名前空間名はGoogleに聞くようにしているが、自作クラスの場合Googleに聞いても出てこないから助かっている。

 デリゲートはw、フレームワークのクラスを継承した場合のメンバ名はy、ローマ字はプリフィックスxとしている。フレームワークのクラスを継承するとメンバを探すのがほんとににっちもさっちもいかなくなる。ControlとかCollectionとかで顕著だ。enumはeだが、ほんとはもう少しかぶるものがないプリフィックスにしたかった。けどなんかこうなってしまった。

 インターフェースにはプリフィックスIと決まっているが、かぶると探すのが大変なので、jにしようかと思ったが、見た目が何だか気に入らないので、インターフェースを自作するのはやめることにした。基本的にはクロージャを使えばいい。メソッドの組が必要な時は

class zInterfaceClass
{
  public Func<Hoge,Huga> Hego{ get; private set; }
  public Func<Hoge2,Huga2,Hego2> Pumo{ get; private set; }

  public zInterfaceClass(
    Func<Hoge,Huga> hego, 
    Func<Hoge2, Huga2, Hego2> pumo){ 代入 }
}

 これでいい。基本的に大きなインターフェースを実装した大きなオブジェクトを作るなんてのは愚の骨頂で、ある処理のために必要なメソッドがある時は必要なだけその都度クロージャを与えればいい。その方が使いやすいしソースも分かりやすくなる。シリアライズやらリフレクションやらなんやらの都合でクロージャが使えない場合でも、アブストラクトクラスを単一継承すれば十分だ。interfaceはもう必要ない。

 FxCopが狂ったように文句を言ってくるが無視している。FxCopって何に使うんだろう。