命名規則

.Net Frameworkでいろいろ設計していますが、ペゾルド本と、MSDNのクラス詳細を元に命名しています。
曰く、以下な感じ。

  • 基本的にCamel(大文字を文節の区切りと見なす)
  • クラスは「大文字始まり」
  • 外部に公開されているメソッド、プロパティは「大文字始まり」の意味ある単語
  • プロパティは、同名のクラス/構造体/列挙体を型としてもつ
  • 引数、ローカル変数は「小文字始まり」で、1文字目は型を示すっぽい

特に、プロパティが独特で、

Color Color{ get; }

ってな感じで型とプロパティ名が同じになる傾向にあります。これは、型自体が意味を持っており、オブジェクトに対して「何をしているのか」が一目瞭然になるという理由のようです。とりあえず、気持ち悪かったですが、そのうち慣れました。


慣れました、が。
そのクラスの中でローカルな意味を持つ列挙体をプロパティとして持とうとしてはまってみたり。

class hoge
{
public Nanika Nanika
{
set
{
}
}
}
public enum Nanika
{
hoge,
fga,
}

これはいいんです。でも、

class hoge
{
public Nanika Nanika
{
set
{
}
}
public enum Nanika
{
hoge,
fga,
}
}

これはダメ。なぜかというと、クラスの中に入っている名前が2つ被るから。
でも、意味合いとしては「このクラスローカルの列挙体を使って、このクラスローカルの属性を付加したい」という意図からすると、これが出来ないのはえらい苦痛。だって、列挙体の意味って、クラスが変わると意味が変わってくるし、そもそも全部のクラスで共通に使えるような列挙体って、スコープが大きすぎて混乱のものだと思うし。
うーむ、そもそも、「型とID(名前)が被っても大丈夫」というルール自体がもしかして中途半端にまずいんじゃないのかなぁ……。