のにっき

【C#】定義名に日本語使っていいって知ってた?

最近、知り合いにC#を教えていたのですが、
C#の定義名に日本語を使ってもいいという事をさらっと話したらビックリされました。
日本語表記はデメリットが目立つので毛嫌いされがちです。
しかし、使いどころを間違えなければ個人開発なら便利だという事を
組み込みルールや使い方例などを使ってまとめてみました。
※私個人の使い方ですのであくまで参考程度に・・・

C#は定義名に日本語を使ってもOK

変数やクラス、メソッド名に日本語を使ってもお問題ないです。
以下にソース例を載せておきます

        private void 日本語チェック()
        {
            int 数値 = 1;
            string 文字 = "TEST";
            Console.Write(数値.ToString() + 文字);
        }

こんな感じで、メソッド名や変数名を日本語表記にしても問題なく動きます。

日本語表記は意外とデメリットが多くて推奨されてない

定義名に日本語を使い事のメリットは誰でも分かると思いますが、
実際に日本語表記を使ってみると、意外とデメリットが多いことに気づきます。

・変数名が長くなりがち(日本語だと詳細までかけちゃうから・・・)
・呼び出すときにいちいち
 日本語入力に切り替えて書かないといけない(これはクソだるい!)
・コードの中にチラチラ日本語が混ざると、
 コードが頭に入りずらい(私だけでしょうか?)
・ここは英語でいこうかな?
 みたいなバカみたいな迷いが生じてしまう(私だけ)

初めて使用した時に感じたことはこんなものでしょうか。
皆さんも使ってみるとこんな感覚なんじゃないかなと思います。
ルールを考えずに日本語表記を使うなら、使わない方が断然マシです!
上記のデメリットと向き合い、
日本語表記と上手く向き合うと分かりやすくソースが組めるようになります。
私個人の日本語表記ルールを以下にまとめます。

ルール:日本語は英語を先頭において使う

まずは定義例をご覧ください。

        // 変数定義
        public static int _Quiz_正答率;
        public static int _Quiz_中央値;
        // 定数定義
        public const int Df_Time_ノード消去時間 = 50;
        public const int Df_Pt_リズム_悪 = 0;
        public const int Df_Pt_リズム_並 = 3;
        public const int Df_Pt_リズム_高 = 5;
        // 関数定義
        private bool Is_数値である(){}
        private string Get_今日の日付文字列(){}

こんな感じで定義名を記入します。
グローバル変数には先頭に「 _ 」
・定数には先頭に「 Df_ 」
・判定関数(戻り値がbool)の物には先頭に「 Is_ 」
・値取得関数(戻り値がbool以外)には「 Get_ 」

など、自分でルールを決めて定義名の先頭に英語表記を記入しましょう。
要は、先頭にその定義のカテゴリを英語で表記するということです。
日本語と違い、英語は短い文字で分かりやすいカテゴリを作れます。
この表記法で定義名を見るだけで大雑把説明と詳細説明の2つを行うことができます。
また、最大の利点は日本語入力に切り替えなくても呼びだせます!
呼び出し方法は、先頭の文字を記入してインテリジェンス機能を使えば一発です。
【例】
「Df_Pt_リズム_悪」を呼び出したいときは、
「Df_Pt_」までを記入してインテリジェンス機能を使って呼び出す。
※インテリジェンス機能が分からない方は、
 「 自分の使っているエディター名 インテリジェンス 」で検索!

この表記法によって、呼び出しも簡単になり
インテリジェンス機能を使った組み込みに慣れることもできて一石二鳥です。

日本語もいいけど英語も慣れていかなきゃ・・・

上記にルールを書いておいてなんですが、
私は定数の末尾にしか日本語表記を使っていません。
その理由は、英語使わないと一生覚えれないからです。
定義名を決めるときに、役割に対応する英語を調べるのは英語の勉強になると思います。
関数や変数は、定数と違って汎用的な役割を持っていることが多いです。
よく使う役割に対応する英語ぐらい覚えておきたいので、
日本語表記を使いすぎない!という事も大事だと思います。

以上です。
今回は、集団開発から見たデメリットは一切書いてません!
(だって集団開発なら、規約で日本語なんか確実に禁止になってるから意味ないもん)
個人開発なら日本語表記は全然便利だよ。という話でした。