C#の命名規則について基礎から解説!Pascal形式・Camel形式・Camel 形式の特殊な命名規則
- システム
エンジニア - C#の命名規則とはなんですか?
- プロジェクト
マネージャー - プログラミングにおける命名規則とはフィールドやメソッドなどの名前の記述ルールを統一することです。命名規則について詳しく紹介します。
C#の命名規則とは?
C#に限らずプログラミングをする上では、必ずコーディングルールを守るべきです。業務でプログラミングをする場合、他の人が読んでわかりやすいソースコードを記述する必要があるため、統一性を重視しないと開発作業が円滑に進められません。
コーディングルールの中でも命名規則は重要な要素になります。この記事ではマイクロソフトが推奨するC#の命名規則について説明するので是非ご覧下さい。
命名規則のメリット
プログラミングにおける命名規則とは、フィールドやメソッドなどの名前の記述ルールを統一することです。
プログラミングにおいて命名規則に従うメリットは、
・ソースコードの見た目が統一されるので、ソースコードを読むときに、内容をすぐに読み取りやすくなる
・ソースコードの修正やメンテナンスがしやすくなる
といったことがあります。
Pascal 形式について
マイクロソフトはC#でフィードやクラスやメソッドなどの名前をPascal 形式で記述することを推奨しています。Pascal 形式とは英単語の先頭を大文字にしてつなげるスタイルです。
例えばdot net frameworkをPascal 形式で記述すると、DotNetFrameworkになります。クラスや構造体の名前の命名規則はPascal 形式に従い、以下のようにします。
1
2
3
4
5
6
7
8
9
10
|
class TestWorkClass
{
}
struct TestWorkStruct
{
}
|
Pascal 形式を使用するケース
インターフェイスの場合はクラスや構造体と違って、以下のようにまず先頭にiの大文字のIを付けて、その後はPascal 形式で記述します。また末尾はableを付けます。
1
2
3
4
5
|
interface ITestWorkInterfaceable
{
}
|
privateではないフィールド、プロパティ、イベント、メソッドは以下のようにPascal 形式で記述します。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class TestWorkClass
{
public int TestIntField;
public string TestStrProperty { get; set; }
public event Action TestEvent;
public void TestVoidMethod()
{
}
}
|
Camel 形式について
Pascal 形式に似たCamel 形式というルールもあります。これは先頭のみ小文字で、後はPascal 形式と同じです。dot net frameworkならばdotNetFrameworkになります。C#でCamel 形式で記述するのは、以下のようなメソッドのパラメータ、ローカルフィールドです。
1
2
3
4
5
6
|
public void TestMethod(int testIntParam, string testStrParam)
{
int testValue;
string testString;
}
|
Camel 形式の特殊な命名規則
クラスのメンバでprivateかinternalなフィールドはCamel 形式にして、さらに先頭に_を付けます。staticでprivateかinternalなフィールドは先頭にs_をつけます。スレッド静的である場合は先頭にt_を付けます。これはC#特有の命名規則と言えるでしょう。
1
2
3
4
5
6
7
8
9
10
11
12
|
class TestWorkClass
{
private int _testPrivateField;
internal int _testInternalField;
static private int s_testPrivateField;
static internal int s_testInternalField;
[ThreadStatic]
private static int t_testPrivateField;
}
|
メソッドの命名規則
C#のメソッドには一定の命名規則があります。インスタンスを帰すメソッド名は先頭にCreateかNew、TrueかFalseを帰すメソッド名は先頭にIsかCanかHas、型変換を行うメソッド名は先頭にToを付けます。これにより一目でメソッドの機能がわかるようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public object CreateInstance()
{
return new object();
}
public bool IsString(object obj)
{
if (obj is string)
return true;
else
return false;
}
public string ToString(int value)
{
return value.ToString();
}
|
非同期メソッドの命名規則
非同期で動作するメソッドの名前には、以下のように末尾にAsyncを付けます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
using System;
using System.Threading.Tasks;
class Program
{
public static Task WorkAsync()
{
return Task.Run(() => { return "タスク"; });
}
public static async void Main()
{
var task = WorkAsync();
await task;
}
}
|
forループで使用する変数の名前
forループで使用する変数の名前はiを使用します。
二重の場合は2つ目はj、三重の場合は3つ目はkです。これはindexのiを取ったルールで、C#に限らず他の多くの言語で古くから採用されている命名規則です。四重なら4つ目はlになりますが、ループのネストはなるべく少なくするようにしましょう。
1
2
3
4
5
6
7
8
9
10
11
|
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
Console.WriteLine(i + j + k);
}
}
}
|
抽象クラスの命名規則
抽象クラスの名前も通常のクラスと同様にPascal 形式にします。そして末尾にBaseを付けましょう。デリゲートも通常のメソッドと同様にPascal 形式ですが、末尾にはCallbackを付けます。イベント用の場合はEventHandlerを付けましょう。
1
2
3
4
5
6
7
8
9
10
11
|
abstract class BaseTest
{
}
class Test : BaseTest
{
delegate void TestCallback();
delegate void TestEventHandler(object sender, EventArgs e);
}
|
列挙子の命名規則
列挙子の場合はPascal 形式で命名します。以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
|
enum DayOfWeek
{
SunDay,
MonDay,
TuesDay,
WednesDay,
ThursDay,
FriDay,
SaturDay
}
|
コーディング規則について
命名規則とは違う分野になりますが、マイクロソフトが推奨するC#のコーディング規則には以下のようなものがあります。しっかり守って綺麗なソースコードを記述しましょう。
・1つの行には1つの命令文のみを記述する
・1つの行には1つの宣言のみを記述する
・インデントは4文字スペースを使用する
・メソッド定義とプロパティ定義の間に 1 行の空白行を追加する
・以下のように式に句を作成するときはかっこを使用する
1
2
3
4
5
6
7
8
9
10
|
int v1 = 0;
int v2 = 0;
int v3 = 0;
int v4 = 0;
if ((v1 == v2) && (v3 == v4))
{
Console.Write("1と2、3と4は等しい。");
}
|
コメントについて
C#の//ではじまるコメントについてもルールがあります。まずコメントは、コード行の末尾ではなく別の行に記述します。コマンドの右横に記述はしないということです。また//とコメントの間には、スペースを1つ入れます。
1
2
3
4
5
|
// 正しいコメント
Console.WriteLine("テスト"); // 間違ったコメント
//間違ったコメント
|
- システム
エンジニア - C#の命名規則についてよくわかりました。
- プロジェクト
マネージャー - 命名規則を守って読みやすいプログラミングソースコードを書くようにしましょう。
C#の命名規則を守って綺麗なソースコードを記述しよう
C#の命名規則について解説しましたが、ご理解頂けましたでしょうか。命名規則を守らずにプログラミングをしても、動作しないということはありません。しかしチームで開発するのであれば第三者が読みやすいソースコードを書くことは必須です。
この記事のルールを守って、是非綺麗なソースコードを書き上げてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)