C# コーディング規約入門

読みやすいコードを書くための基本ルールを学びましょう

コーディング規約とは

コーディング規約とは、プログラムを書く際に守るべきルールや書き方のまとめです。コードは書くだけでなく、後から自分や他の人が読む機会があります。規約に沿って書くことで、読みやすく・理解しやすいコードになります。

正しく動くプログラムであっても、変数名が意味不明だったりインデントが乱れていると、後の修正や機能追加が非常に困難になります。最初から読みやすいコードを書く習慣を身につけましょう。

💡 このページでは、Microsoft が推奨するC#の書き方を初心者向けにわかりやすく解説します。

命名規則

変数・メソッド・クラスなどの名前の付け方には、C# でよく使われる以下の規則があります。

パスカルケース(PascalCase)

単語の先頭をすべて大文字にする書き方です。クラス名・メソッド名・プロパティ名に使います。

NG
class myclass { }
void showname() { }
public int totalcount;
OK
class MyClass { }
void ShowName() { }
public int TotalCount;

キャメルケース(camelCase)

最初の単語は小文字、2つ目以降の単語の先頭を大文字にする書き方です。ローカル変数・引数・private フィールドに使います。

NG
int TotalScore = 0;
string UserName = "";
void Add(int FirstNum, int SecondNum)
OK
int totalScore = 0;
string userName = "";
void Add(int firstNum, int secondNum)

定数はすべて大文字

const で定義する定数は、単語をアンダーバー(_)でつないだ大文字にするのが一般的です。

OK
const double TAX_RATE = 0.1;
const int MAX_COUNT  = 100;

意味のある名前をつける

変数名・メソッド名は、その役割が一目でわかる名前にしましょう。省略しすぎると後から意味がわからなくなります。

NG(意味が不明)
int x;
string s;
void Calc(int a, int b)
OK(意味が明確)
int score;
string userName;
void AddNumbers(int num1, int num2)

インデントと書式

インデント(字下げ)

ブロック({ } の中)は4スペースまたは1タブでインデントします。Visual Studio / VS Code ではTabキーで自動的にインデントが入ります。

NG
if (a > 0)
{
Console.WriteLine(a);
}
OK
if (a > 0)
{
    Console.WriteLine(a);
}

波括弧の位置

C# では波括弧 { を次の行に書く「Allman スタイル」が標準です。1行が短くても必ず { } を使いましょう。

NG(括弧なし・同一行)
if (a > 0) Console.WriteLine(a);

if (a > 0) {
    Console.WriteLine(a);
}
OK
if (a > 0)
{
    Console.WriteLine(a);
}

1行の長さ

1行が長くなりすぎると読みにくくなります。目安として100文字以内を心がけましょう。長い処理は改行して複数行に分けます。

空白行の使い方

メソッドとメソッドの間、処理のまとまりとまとまりの間に1行の空白を入れると読みやすくなります。

コメントの書き方

コメントはなぜ必要?

コードは書いた直後は意図がわかっていても、数週間後・数ヶ月後に見返すと「なぜこう書いたのか」がわからなくなります。コメントはコードの意図(なぜそう書いたか)を記録するために書きます。

ただし、コードを読めばわかることをそのままコメントにするのは意味がありません。コードを読んでもわかりにくい部分に絞って書くのがポイントです。

行コメント(//)

その行の処理の補足説明に使います。

int score = int.Parse(Console.ReadLine()); // 入力を整数に変換
if (score >= 60) // 60点以上なら合格
{
    Console.WriteLine("合格");
}

ブロックコメント(/* */)

複数行にわたる説明や、処理の大きなまとまりに使います。

/*
 * 平均点を計算して合否判定するメソッド
 * scores: 各教科の点数配列
 * 戻り値: 合格なら true
 */
bool IsPass(int[] scores)
{
    double avg = 0;
    foreach (int s in scores)
    {
        avg += s;
    }
    avg /= scores.Length;
    return avg >= 60;
}
⚠️ やってはいけないコメント:コードと矛盾したコメント、または「i を1増やす」「変数を宣言する」など、コードを読めばすぐわかることだけを書いたコメントは、かえって混乱を招きます。

その他のポイント

マジックナンバーを避ける

意味のわからない数値(マジックナンバー)を直接コードに書くのはやめましょう。定数(const)に名前をつけて使います。

NG
if (age >= 18)
{
    Console.WriteLine("成人");
}
double tax = price * 0.1;
OK
const int ADULT_AGE = 18;
const double TAX_RATE = 0.1;

if (age >= ADULT_AGE)
{
    Console.WriteLine("成人");
}
double tax = price * TAX_RATE;

1つのメソッドは1つの役割

メソッドは「1つのことだけをする」ように設計すると、再利用しやすく・テストしやすくなります。複数の処理をまとめて1つのメソッドに詰め込むのは避けましょう。

変数は使う直前に宣言する

変数はメソッドの先頭でまとめて宣言するのではなく、実際に使う場所の直前で宣言すると可読性が上がります。

💡 Visual Studio / VS Code には、コードの書き方を自動で整形する機能があります。Ctrl + K → Ctrl + D(Visual Studio)でコード全体を自動整形できます。