Visual Studioで指摘される「名前指定の規則違反」を直す

Visual  Studio を使ってボタンのイベントを作ると button1_Click な感じにキャメルケース(camelCase)になるのだが、「名前指定の規則違反」を指摘されて、こんな感じに大文字で始まらなければいけない、と言われる。

image

毎度、なんじゃこりゃ?と思っている訳で、結構前から C# – イベントハンドラーで構文エラー「~button1_Click~」(100021)|teratail 問題があったりするわけだが。これ、命名規約のルールとして、

  • プライベートなメソッドは小文字で始める
  • パブリックなメソッドは大文字で始める

というパターンが妥当で(実際、以前からそうなっていたし)、イベントの自動生成もプライベートなフィールド名前(button1)から自動でイベントメソッド名を付けている訳で、このキャメルケースでいいような気もする。

というか、Microsoft の初期設定はまあいいから、プライベートなメソッドはキャメルケースにして小文字で始めたいんですけど。

どこで命名規約を決めているのか?

「ツール」→「オプション」で、「テキストエディタ」→「C#」→「コードスタイル」→「名前指定」で命名規約は決めてある。

image

デフォルトでは、3つだけ指定してあって、

  • インターフェースを「I」で始めること
  • 型(クラス)をパスカルケース(大文字始まり)にすること
  • フィールド以外のメンバはパスカールケース(大文字始まり)にすること

というのが決めれれていて、最後の「フィールド以外」ってのに引っ掛かっている。なので、手っ取り早いのは、この規約を消してしまうことだ。右にある「×」ボタンを押して規約から外してしまうと、先の自動生成のイベント名に適用されなくなって警告がでなくなる。

「フィールド以外のメンバー」の適用範囲を public のみにする

もう少し意図通りに動かしたいときは、「仕様の管理」をクリックして「フィールド以外のメンバー」の適用範囲を変えてやる。

image

デフォルトは、こんな感じにアクセシビリティが、public から private まで全てになっている。ここで private とかを外して public だけにする。

image

意図的に、public だけパスカルケースにする

image

C# のエディタを閉じて、開き直すと無事警告がでなくなる。

image

命名規約に return がないのが問題?

これで無事、イベントで生成されるメソッド名に警告がでなくなるのだが、じゃあ、最初に話を戻して

  • プライベートなメソッドは小文字で始める
  • パブリックなメソッドは大文字で始める

という2つの規約を作りたいときはどうするのか?という問題が残る。Visual Studio の命名規則の適用って、上から順番に or で対処していくパターンなので、Outlook のメール振り分けのように途中で return ってのはない。なので、重要度に「なし」をするとうまく合格させることもできるのだが、ここで例外を作るとロジック的に複雑になってしまう。なので、適用範囲を絞りながら少しずつ追加するのがベターじゃないかなと。

でもって、プライベートなメソッドは必ずキャメルケース(小文字始まり)で、ということにするには、こんな風に規則を追加する。

image

最後の2つで、メソッドの命名規則(private と public)を分けることになる。

image

カテゴリー: C# パーマリンク