티쿤 C# 코딩 스타일 가이드
Visual Studio 2015 설치 시 세팅되는 값을 기본으로 합니다.
변수
camelCase를 사용합니다. 지역변수일 경우에도 _ 언더바는 사용하지 않습니다.
//good
int intValue;
string strValue;
ClassObject classObject;
var list = new List<string>();
//bad
int IntValue;
string _strValue;
ClassObject class_object;
var list = new List<string>();
상수
PascalCase를 사용합니다.
const
키워드 대신 readonly
를 사용합니다.
//good
public readonly int MaxValue;
public static readonly MinValue ;
//bad
public const int MaxValue;
public static readonly MIN_VALUE ;
프로퍼티
PascalCase를 사용합니다. property 문에서는 별도의 throw 처리를 하지 않습니다. 예외가 발생하는 상황이면 메서드를 사용하시기 바랍니다. get 접근자를 사용하여 객체의 상태를 변경하면 안됩니다.
// 일반적인 경우
public int Size { get; set; }
// get, set 접근 권한을 다르게 설정할 경우
int MaxSize { public get; private set; }
// 기본값 설정
public string Name { get; set; } = string.Empty;
// set, get 접근자에서 특별한 작업을 위해 변수를 명시적으로 선언해서 사용할 경우
private string companyName;
public string CompanyName
{
get => companyName + " : ";
set => companyName = value;
}
public string CompanyName2
{
get
{
if (companyName == "Special") return "!!!!!!";
return companyName;
}
set
{
companyName = value;
}
}
//bad
public string CompanyNameBad
{
get
{
// get 접근자에서 상태를 변경하지 마세요.
companyName = companyName + " : ";
return companyName;
}
set
{
companyName = value;
}
}
들여쓰기
들여쓰기는 띄어쓰기 4 개를 사용합니다. VS 를 사용하는 경우 옵션 > 텍스트 편집기 > C# > 탭 항목이 탭 크기: 4, 들여쓰기 크기: 4, 공백 삽입
인지 확인해 주세요.
class Test
{
static void Main()
{
블럭
제어문 블럭의 코드가 한 줄일 경우 블럭을 사용하지 않습니다.
// good
if (isTrue) return;
foreach (var item in list) Action(item);
if (isTrue == true)
return Action(item);
foreach (var item in list)
OtherClass.Action(item);
// bad
if (isTrue) { return; }
foreach (var item in list) { Action(item); }
if (isTrue == true)
{
return Action(item);
}
foreach (var item in list)
{
OtherClass.Action(item);
}
줄 바꿈
코드의 길이가 길어질 경우 ` ,.()` 혹은 연산자를 기점으로 줄 바꿈 합니다. 줄 바꿈 이후 들여쓰기 합니다.
if (이러면안되지만함수명이너무너무길던가(
파라메터도, 너무, 많이, 전달, 받아야, 하는, 상황이면)
&& 줄바꿈하여.표시합니다(하지만, 이런경우, 별도, 펑션, 사용을, 권장합니다))
{
return;
쿼리
코드 내에 쿼리 구문 을 생성할 경우 string 값 할당을 다음과 같은 방식으로 합니다. StringBuilder는 사용하지 않습니다.
{
string query = $@"
SELECT *
FROM tblOrder
WHERE strUserId = @userId
AND { subConditionString }
";
return query;
}