C# 識別子の名前付け規則と表記規則

C# 識別子(名前付け)のポイントをやさしくまとめると


1. そもそも「識別子」とは?

  • クラス・メソッド・変数などにつける「名前」のこと。コンパイラはこの名前でプログラムの各要素を区別する。 

2. コンパイラが強制する「名前のルール」(守らないとエラー)

  1. 先頭文字は 英字または _(アンダースコア)
  2. 2 文字目以降は英字・数字・一部の Unicode 文字を使える。
  3. C# の予約語(if,int など)は使えないが、@ を先頭につければ利用可
int @if = 0;   // 予約語 “if” を識別子にした例
  1. Compiler 生成用に「__」(アンダースコア 2 連続)は取っておく。 

3. みんなで読みやすくするための「名前付け規約」(推奨だが強制ではない)

使う場所書き方
型名・名前空間・public メンバーPascalCaseDataService, PhysicalAddress
メソッドの引数・ローカル変数camelCaseitem, workerQueue
private インスタンス フィールド_camelCase(先頭に _)_workerQueue
private / internal static フィールドs_ プレフィックスs_startTime
スレッド静的フィールドt_ プレフィックスt_cached
インターフェース先頭に IIWorkerQueue
属性クラス~Attribute で終わるSerializableAttribute
例外クラス~Exception で終わるFileNotFoundException
async メソッド~Async で終わるLoadAsync()
列挙型 (非 Flags)単数形Color
列挙型 (Flags)複数形FileAccessFlags

ポイント

  • 「意味が伝わる長さ」を優先し、略語は極力避ける(ATM や URL など一般的なものだけ OK)。
  • 単一文字の変数名は ループカウンタ限定 にとどめる。
  • 規約違反をコンパイル時にチェックしたい場合は EditorConfig の 命名規則を利用すると便利。 

4. よくある質問(初学者むけ Q&A)

質問短い答え
Q. _ を名前の途中で使っていい?public 系では避ける。_ は接頭辞としてのみ使うのが一般的。
Q. 予約語をどうしても変数名にしたい@ を先頭に付ける(推奨はしない)。
Q. 2 文字以上の頭字語(XML など)は全部大文字?2 文字は大文字 (IOStream)、3 文字以上は先頭だけ大文字 (XmlDocument) が公式ガイド。

5. 良い名前付けをまとめて示すサンプルコード

using System;
using System.Threading;
using System.Threading.Tasks;

namespace SampleNaming
{
    // PascalCase のクラス名
    public class DataService
    {
        // public フィールド (基本は避ける):PascalCase
        public bool IsValid;

        // PascalCase プロパティ
        public int MaxItems { get; init; }

        // private インスタンス フィールド:_camelCase
        private readonly IWorkerQueue _workerQueue;

        // private static フィールド:s_ プレフィックス
        private static DateTime s_startTime;

        // コンストラクタ:PascalCase
        public DataService(IWorkerQueue workerQueue)
        {
            _workerQueue = workerQueue;
        }

        // メソッド:PascalCase、引数 camelCase
        public void EnqueueItem(string item)
        {
            _workerQueue.Enqueue(item);
        }

        // ローカル変数:camelCase
        public int GetQueueLength()
        {
            int length = _workerQueue.Count;
            return length;
        }

        // async メソッドは Async サフィックス
        public async Task LoadAsync(CancellationToken cancellationToken)
        {
            await Task.Delay(500, cancellationToken);
        }
    }

    // インターフェースは I で始める
    public interface IWorkerQueue
    {
        int Count { get; }
        void Enqueue(string item);
    }

    // Flags 列挙型は複数形
    [Flags]
    public enum FileAccessFlags
    {
        Read    = 1,
        Write   = 2,
        Execute = 4
    }
}

このコードには PascalCase / camelCase / プレフィックスの使い分け がひと通り入っているので、コピペして動かしながら確認すると理解が早まります。


6. 次の一歩

  • **Visual Studio / VS Code の「クイックアクション」**でリネーム提案を受け入れるクセをつけると、自然に規約が身につきます。
  • プロジェクトに .editorconfig を置き、IDE00xx 系の 命名規則アナライザー警告エラーに上げるとチームでも統一しやすくなります。

まとめ

コンパイラが怒る「ルール」と、読みやすさのための「規約」を分けて覚えると混乱しません。まずは PascalCase / camelCase / _ プレフィックスだけ守ってみましょう。

英語説明になっている場合

このリンク画面の左下に言語の選択がありますので、「日本語」の選択をします

訪問数 10 回, 今日の訪問数 1回

C#,命名規則

Posted by hidepon