コーディングルールって決めるのも面倒ですし、人数が多いと守っていくのも大変ですよね。
経験豊富なプログラマは自分のスタイルを持ってるので、踏み入ると宗教論争に発展しかねません。
私の結論、C#は .NET Frameworkのデザインガイド に従う!で良いと思います。
いわゆるMicrosoft式というやつです。VisualStudioを使ってるなら、デザインガイドに従った提案もしてくれます。コーディングルールを決めることに時間を費やすのはとても勿体ないです。
UnityのC#は少し特殊です。
彼らのコードはプロパティも変数のように見えるので、Microsoft式とは少し異なります。
この時点で既に2つの宗教があるわけですが…。
自分で作るクラスはMicrosoft式に従っておけば問題になることはないでしょう。
3つ目の宗教 (個人的ルール)
Microsoft式で良いと言っておきながら…
ここで個人的な3つ目の宗教が登場すること許してください。
それは私が唯一Microsoft式を裏切ってprivate変数に “_” (アンダースコア) を付けるからです。
なぜ付けるかというとprivate変数を区別したいからです。
C#を書いてると大体はプロパティになるのですが、プロパティの中身はメソッドです。
パフォーマンスを優先したいクラス内ではあえて変数にして処理したいこともあります。
private int _count;
public int Count { get { return _count; } }
public void AddCount( int count )
{
// こういう場合は変数アクセスの方が効率が良い
_count += value;
if (_count < 0 ) _count = 0;
if (_count > 1000) _count = 1000;
}
Excelで定義したパラメータをScriptableObjectに変換したりするときなど、 単純なデータクラスの変数はpublic変数でシリアライズしたいこともあります。
[System.Serializable]
public class EnemyData
{
public string id;
public int lv;
public int hp;
public string _prefabName; //private:シリアライズしたいけど直接触って欲しくない意思表示!
public string PrefabPath { get { return string.Format("Enemy/{1}.prefab", _prefabName); } }
}
大文字はじまりならプロパティ、小文字はじまりならpublic変数、”_” が付くときはprivate/protectedで扱われる変数という具合に識別しておくのが私の唯一のローカルルールです。
“_” はじまりの変数はよく見かけますが、賛否両論で宗教的なものなので参考程度に!