この記事について
自分用に命名規則をまとめたメモです。
誤字脱字や間違っている部分があればコメントにてご指摘ください。
またよくわからなかった部分には🐹?がついています。
ご迷惑をおかけしますが有識者の方、教えていただけると幸いです。
インターフェースの先頭名はI
で始める
public interface ITest
属性型にはAttribute
という単語をつけて終わる
Attributeを継承しているクラスの最後にAttribute
をつける
上のクラスを利用しているクラスにはAttribute
は必要ない
public class TestAttribute : Attribute
列挙型はフラグとして使うかどうかで命名を分ける
- フラグじゃない時は単数名詞にする(通常の使い方)
public enum Name
{
A,
B,
C
}
- フラグを利用する時は複数形の命名にする🐹?
[Flags]
public enum Names
{
A = 0,
B = 1,
C = 2
}
連続して2回_
を使わない
悪い例
public class Test
{
int __num;
string test__Name;
}
良い例
public class Test
{
int _num = 0;
string _testName;
}
連続して2回_
を利用すると内部識別子と衝突する可能性があるらしい🐹?
変数、メソッド、クラスには分かりやすい名前を使う
悪い例 (極端な例しか思いつかなかった...)
public class P_Move
{
float ms = 0.0f;
public void CMS(float cms)
{
ms = cms;
}
}
良い例
public class PlayerMove
{
float currentMoveSpeed = 0.0f;
public void ChangeMoveSpeed(float changeMoveSpeed)
{
currentMoveSpeed = changeMoveSpeed;
}
}
簡潔さを優先する
冗長なコードは避ける、また分かりやすさも意識する事。
- boolの判定
悪い例
if(isJump == true)
良い例
if(isJump)
- クラス、メソッド、変数名を分かりやすくする(既に書いたのでスキップ)
- 分かりやすい処理のコメントは避ける
悪い例
// 1 + 1 を行っている
int a = 1 + 1;
良い例
int a = 1 + 1;
見るだけで分かるコードのコメントはなるべく避けよう。
ただし、複雑な処理や仕組みを理解していないと分からない処理はコメントを書くことを
推奨します。
- ifのネストを深くしない
悪い例
if (!isDeath)
{
if (isDodge)
{
if (isJump)
{
if (isAttack)
{
}
}
if (isAttack)
{
if (isJump)
{
}
}
}
}
良い例 早期リターンやメソッド分割を利用する
public void Dodge()
{
if (isDeath)
{
return;
}
if (isDodge)
{
Jump();
Attack();
}
}
public void Jump()
{
if (isJump)
{
if (isAttack)
{
}
}
}
public void Attack()
{
if (isAttack)
{
if (isJump)
{
}
}
}
- 似たような処理は共通化する
悪い例
int currentHP;
void damage()
{
currentHP -= 10;
}
void heal()
{
currentHP += 10;
}
void poison()
{
currentHP -= 5;
}
良い例
int currentHP;
void ChangeHP(int changeHP)
{
currentHP = changeHP;
}
クラス名とメソッドにはパスカルケースを使う
先頭を大文字にして、それ以降単語の始まりを大文字にする
例えるとこんな感じになります → PlayerMove
単語が切り替わった時に、その単語の先頭を大文字にすれば大丈夫です。
public class PlayerMove
{
void Move()
{
}
}
メソッド引き数とローカル変数にはキャメルケースを使う
上と違い先頭を小文字にしてそれ以降の単語の始まりを大文字にします。
例えるとこんな感じです → playerMove
上のパスカルケースと違い最初の単語を小文字にしていますがそれ以降は上と同じです。
※あまり関係のないメモ
キャメルケースという名前は、変数がラクダのコブみたいに見えるためキャメルケースと名付けられたとか。また上のパスカルケースの事をアッパーキャメルケースとも呼ぶらしいです。
int moveSpeed;
int currentHP;
定数にはパスカルケースを使う
enum Action
{
Idle,
Move,
}
const int MaxHp = 100;
readonly int MaxSpeed = 5;
プライベート変数は_
で始まり残りはキャメルケース
確認する
プライベート変数が定数の場合、定数を強調するためにこの命名は適用しない。
int _currentHP;
float _moveSpeed;
静的フィールドの先頭にs_
をつける🐹?
あまり見かけない気がするけどどうなんだろう...?
static int s_num;