Cooooding!!

Unity(C#)を使ったゲーム開発関連Tipsなど

VisualStudioでクラス名や変数名の命名規則をチェックする【C#】

概要

クラス名や変数名などの命名規則を決めていてもうっかり間違えることがよくあるので、Visual Studio命名規則をチェックする機能を使ってみました。命名規則にあっていない部分に線が引かれるようになります。

設定例(今筆者が使っている設定)
VisualStudioで命名規則を設定した例

表示例
VisualStudioで命名規則を設定した結果

設定方法

設定画面の開き方

  1. 画面上部のメニューから「ツール」→「オプション」を選択
  2. 「テキスト エディター」 → 「C#」 → 「コードスタイル」 → 「名前指定」 を選択

新しい命名規則を追加する

開いた設定画面下の[+]ボタンを押すと命名規則が1行追加されます。

命名規則の追加ボタン

仕様

仕様というのはパスカルケースやキャメルケースなどのルールを何に対して適用するかを指定する設定のことです。例えば「クラス」や「privateなフィールド」「publicなメソッド」などがあります。

仕様はウィンドウの下にある「仕様の管理」から種類を増やしたり内容を変更できます。
仕様の管理画面

「〇〇〇と△△△と□□□は全てパスカルケース」という命名規則を作りたい場合はそれらをまとめた仕様を作ると綺麗にまとまります。
名前空間、クラス名、構造体名、enum名、型引数名をまとめた仕様

シンボルの種類の中にいくつかわかりにくいものがありますが「parameter」はメソッドの引数、「type parameter」はGenericの型引数、「local」はローカル変数になります。
各シンボルの説明。メソッドの引数、Genericの型引数、ローカル変数

必要なスタイル

スタイルというのは「パスカルケース」や「キャメルケース」などのことです。最初からある「キャメルケース」というスタイルは先頭が小文字になるLower Camel Caseを指します。

「m_」などのプレフィックスを付けたい場合は以下のように設定します。
m_で始まるパスカルケースを設定した例

スネークケースならこうなります。
スネークケースを設定した例

重要度

重要度は命名規則違反をどう表示するかというルールです。
重要度の種類

エラーの場合
重要度をエラーにした場合の表示
命名規則違反の個所に赤線が引かれます。「考えられる修正内容を表示する」から名前を自動修正することもできます。「エラー」という名前ですがコンパイルエラーにはなりません。

警告の場合
重要度を警告にした場合の表示
命名規則違反の個所に緑の線が引かれます。

提案事項の場合
重要度を提案事項にした場合の表示
わかりにくいですが、命名規則違反の個所の先頭に破線が引かれます。

リファクタリングのみの場合
重要度をリファクタリングのみにした場合の表示
命名規則違反の個所に線は引かれません。カーソルを合わせると電球マークが表示され修正が提案されます。

残念なところ

「キャメルケース」はスネークケースが違反にならない

「キャメルケース」というスタイルにはアンダースコアを含まないというルールがないためスネークケースが違反になりません。
キャメルケースなのにスネークケースが違反にならない

同じように「パスカルケース」でスクリーミングスネークケース(全て大文字のスネークケース)が違反にならなかったり、意図通りのチェックをしてくれないことがあります。

プロジェクト単位やソリューション単位の設定ではない

この命名規則の設定はソリューションやプロジェクトのプロパティではなくVisualStudioのオプションにあるため、全てのプロジェクトで同じ設定が適用されてしまいます。UnityのAssetやOSSなど他人が書いたコードを開くと違反が指摘されてしまうことが多々あります。

感想

いくつか残念なところはあるものの個人的にはこれでも十分だと思いました。意図せず命名規則違反をすることが減りましたし、今まで気づいていなかった命名規則違反に気付くことができました。重要度をどれにするかはまだ決まっていませんがしばらくは「エラー」にしてみようと思っています。

環境