작성된 글은 아래 내용을 정리한 내용입니다.
Casing terminology
Case Type | Description | Example |
Pascal Case | 첫 글자와 각 단어의 첫 글자를 대문자로 표기합니다. | MyExampleText |
Camel Case | 첫 단어의 첫 글자는 소문자로, 그 이후의 단어의 첫 글자는 대문자로 표기합니다. | myExampleText |
Snake Case | 모든 단어를 소문자로 표기하고, 단어 사이에 언더스코어(_)를 사용합니다. | my_example_text |
Kebab Case | 모든 단어를 소문자로 표기하고, 단어 사이에 하이픈(-)을 사용합니다. | my-example-text |
Fields and Variables
- 변수 이름은 명사를 사용 : 변수의 타입이 bool인 경우를 제외하고는 명사를 사용.
- boolean에는 (동사 - 접두사)를 사용: 질문에 대한 답은 동사를 접두사로 사용하기, 예를 들어, isDead, isWalking, hasDamageMultiplier 등.
- 의미 있는 이름을 사용하기, 줄임말을 사용하지 말기(단, 수학은 제외): 변수 이름은 그들의 의도를 드러내야 하고, 발음하기 쉽고 검색하기 쉬운 이름을 선택해야 합니다. 단일 문자 변수는 루프와 수학 표현식에는 괜찮습니다.
- 공용 필드에는 파스칼 케이스를 사용하고, 비공개 변수에는 카멜 케이스를 사용: public 필드의 대안으로, 공용 "getter"가 있는 속성을 사용할 수 있습니다.
public float DamageMultiplier = 1.5f;
public float MaxHealth;
public bool IsInvincible;
private bool _isDead;
private float _currentHealth;
// parameters
public void InflictDamage(float damage, bool isSpecialDamage)
{
// local variable
int totalDamage = damage;
// local variable versus public member variable
if (isSpecialDamage)
{
totalDamage *= DamageMultiplier;
}
// local variable versus private member variable
if (totalDamage > _currentHealth)
{
/// ...
}
}
Enums
- Enum 이름과 값에는 파스칼 케이스를 사용하세요.
- Enum 이름에는 단수 명사를 사용하세요.
참고: System.FlagsAttribute로 표시된 비트 단위 Enum은 이 규칙의 예외입니다. 이들은 한 가지 이상의 타입을 나타내므로 일반적으로 복수형으로 만듭니다.
// Enums use singular nouns …
public enum WeaponType
{
Knife,
Gun,
RocketLauncher,
BFG
}
public enum FireMode
{
None = 0,
Single = 5,
Burst = 7,
Auto = 8,
}
// … but a bitwise enum is plural.
[Flags]
public enum AttackModes
{
// Decimal // Binary
None = 0, // 000000
Melee = 1, // 000001
Ranged = 2, // 000010
Special = 4, // 000100
MeleeAndSpecial = Melee | Special // 000101
}
Classes and Interfaces
- 클래스 이름에는 파스칼 케이스 명사를 사용 : 예를 들어, MyClass, EmployeeRecord 등입니다.
- 인터페이스 이름에는 대문자 "I"를 접두사로 사용 : 예를 들어, IDisposable, IEnumerable 등입니다.
Methods
- 이름은 동사로 시작 : 예를 들어, GetDirection, FindTarget 등입니다.
- 매개변수에는 카멜 케이스를 사용 : 메서드로 전달되는 매개변수는 '로컬 변수'처럼 형식화하기.
- bool을 반환하는 메서드는 질문을 하는 방식을 사용 : Boolean 변수 자체와 마찬가지로, 메서드가 참-거짓 조건을 반환하면 동사로 시작하는 질문 형태로 표현하면 됩니다. 예를 들어, IsGameOver, HasStartedTurn 등입니다.
// EXAMPLE: Methods start with a verb.
public void SetInitialPosition(float x, float y, float z)
{
transform.position = new Vector3(x, y, z);
}
// EXAMPLE: Methods ask a question when they return bool.
public bool IsNewPosition(Vector3 currentPosition)
{
return (transform.position == newPosition);
}
Use verbs
- 동사 구를 사용 : 이벤트를 동사 구로 명명하세요. 상태 변경을 정확하게 전달하는 동사를 선택하는 것이 중요합니다.
- 현재 분사 또는 과거 분사를 사용 : 이벤트의 상태가 이전인지 이후인지를 나타내려면 현재 분사 또는 과거 분사를 사용하세요. 예를 들어, 문을 여는 이벤트 이전에는 "OpeningDoor"를, 이후에는 "DoorOpened"를 지정하세요.
// EXAMPLE: Events
// using System.Action delegate
public event Action OpeningDoor; // event before
public event Action DoorOpened; // event after
public event Action<int> PointsScored;
public event Action<CustomEventArgs> ThingHappened;
C#에서 이벤트를 발생시키는 메서드(주체에서)에는 "On"을 접두사로 사용하는 것이 일반적입니다. 이벤트를 호출하는 주체는 일반적으로 "On"으로 시작하는 메서드에서 이를 수행합니다. 예를 들어, “OnOpeningDoor” 또는 "OnDoorOpened"와 같이 사용할 수 있습니다.
public class Door
{
public event Action DoorOpened;
public void Open()
{
// Some logic to open the door...
// Raise the event.
OnDoorOpened();
}
protected virtual void OnDoorOpened()
{
DoorOpened?.Invoke();
}
}