Code Convention
### enum
- 접두어 `E` 사용.
- 값은 모두 대문자, `Snake Case`
```csharp
public enum EState
{
IDLE,
MOVE,
SOME_STATE,
}
```
### const, readonly
- 이름 모두 대문자, `Snake Case`
```csharp
// const
public const INVALID_VALUE = int.min;
// readonly
public readonly Vector3 INVALID_POS = new Vector3(-9999,-9999.-9999);
```
### class
- `Pascal Case`
```csharp
public class Item
{
}
```
- 변수
- `Camel Case`
- 접근 지정자가 public이 아닐 경우, 접두어 `_` 사용.
```csharp
private int _val;
public int value;
```
- 프로퍼티
- `Pascal Case`
```csharp
public Vector3 Pos { get; private set;}
```
### interface
- 접두어 `I` 사용.
- `Pascal Case`
```csharp
public interface IState
{
}
```
### Collection
- Array
- 접미어 `Arr` 사용.
```csharp
int [] numArr = new int[5];
```
- List
- 접미어 `List를` 사용.
```csharp
List numList = new List();
```
- Dictionary
- 접미어 `Dict를` 사용.
```csharp
Dictionary numDict = new Dictionary();
```
### Function
- `Pascal Case`
- 매개 변수 `CamelCase`
```csharp
public void SetHp(int hp)
{
{
```
- 반환형 `bool`
- `Can`, `Has`, `Is` 와 같이 의문문으로 작성.
```csharp
public bool IsValied(int value);
public bool HasValue();
public bool CanAttack();
```
- 람다
- 한 줄일 경우 사용 해도 됨.
```csharp
public bool HasValue() => true;
```
### 이벤트, 액션
- Action
- 접미어 `Callback` 또는 `CB` 사용.
```csharp
private Action _damageValCallback;
```
- Func
- 접미어 `Func` 사용.
```csharp
private Func _checkFunc;
```
- event
- `On내용Handler` 포맷을 사용.
```csharp
public event Action OnRecvAttackHandler;
```
### 패킷 구조체
- 접두어 `P` 사용.
```csharp
struct PItem
```
*****
참고 링크
> https://docs.popekim.com/ko/coding-standards/pocu-csharp
> https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/coding-style/coding-conventions