Home Full Site

다음은 C# 코딩과 관련하여 자주 문의되는 몇 가지 코딩 스타일들을 정리한 것이다.

C# 코딩: C# 데이타 타입

C#에서 데이타 타입은 built-in 타입(예: int) 혹은 CLR 타입(예: Int32)을 사용할 수 있다. C# 코드에서는 이 중 C#에 built-in 되어 있는 데이타 타입을 사용할 것을 권장한다.

int index; //좋은 표현
System.Int32 index; //나쁜표현



C# 코딩: 접근제한자(Access Modifier)

C# 클래스의 멤버(필드, 속성, 메서드 등)들에 대해 항상 접근제한자(Access Modifier)를 명시한다. 일반적으로 접근제한자를 각 멤버 정의의 첫부분에 일괄적으로 표시하는 것이 좋다.

클래스 멤버중 필드는 private으로 지정한다 (OOP). 필드를 public, internal, protected로 해야 할 경우는 속성을 사용한다.


예제

//나쁜표현
string GetName() {...}  // 접근제한자 없음
static public int GetId() {...} // public을 처음에 표시할 것

//좋은표현
public static int GetId() { ... }



C# 코딩: if 조건

if 조건문에서 bool 변수가 있다면, 이를 다시 true/false와 비교하지 않는다.

if 조건문 안에서 할당(assignment)을 하지 않는다. 이는 코드 가독성을 떨어뜨린다.


예제

if (isValid == true) //나쁜표현
if (isValid) //좋은표현

// 나쁜표현
if ((a = b) == 10)

//좋은표현
a = b;  
if (a == 10)



C# 코딩: Attribute 지정

Attribute는 별도의 라인에 지정한다. 만약 복수개의 Attribute가 있는 경우는 한 라인에 하나씩 지정한다.

예제

//나쁜표현
[Authorize] public void Run()
{
}

//좋은표현
[Authorize]
public void Run()
{
}


//나쁜표현
[Authenticate, Authorize, Testable]
public void Run()
{
}

//좋은표현
[Authenticate]
[Authorize]
[Testable]
public void Run()
{
}



C# 코딩: Escape String

문자열 안에 백슬래쉬 같은 Escaped String이 있는 경우, C#의 @ 을 사용한다.

예제

//나쁜표현
string path = "C:\\Temp\\test.txt";

//좋은표현
string path = @"C:\Temp\test.txt";



C# 코딩: 문자열 병합

문자열 병합(concatenation)을 위해서는 + 연산자를 사용하지 말고, StringBuilder나 String.Format()을 사용한다.

예제

//나쁜표현
var res = s1 + "+" + s2 + "=" + s3;

//좋은표현
var res = string.Format("{0}+{1}={2}", s1, s2, s3)



C# 코딩: Exception

Exception을 rethrow 하기 위해서는 원래의 exception 스택을 보존하기 위해 throw; 를 사용한다.

예제

//나쁜표현
catch (Exception ex)
{
    Log(ex);
    throw ex;
}

//좋은표현
catch (Exception ex)
{
    Log(ex);
    throw;
}



C# 코딩: using

IDisposable을 사용하는 클래스 객체는 C#의 using 블럭을 사용하여 자동으로 Dispose() 메서드가 호출되게 한다. using 은 블럭 내에서 Exception이 발생하더라도 항상 Dispose()를 호출하게 된다.

예제

//나쁜표현
var cn = new SqlConnection();
//...
cn.Close();

//좋은표현
using (var cn = new SqlConnection())
{
    //...
}



© csharpstudy.com