닷넷의 일반적인 코딩 규칙과 스타일
닷넷에서의 코딩 규칙과 스타일 가이드는 코드의 일관성, 가독성, 유지보수성을 높이는 데 중요한 역할을 합니다. 이러한 규칙과 가이드는 개발자가 코드를 쉽게 이해하고 유지보수할 수 있도록 하며, 특히 팀 프로젝트에서 일관된 규칙을 적용하여 코드 품질을 높이는 것이 가능합니다. 아래는 닷넷 프로젝트에서 권장되는 일반적인 코딩 규칙과 스타일 가이드입니다.
용어 설명
PascalCase
- 각 단어의 첫 글자를 대문자로 쓰는 표기법입니다.
- UpperCamelCase 라고도 합니다.
- 일반적으로 클래스, 메서드, 속성 등의 이름에 사용됩니다.
- 예:
MyVariable
,MyMethod
,EmployeeManager
.
camelCase
- 첫 단어의 첫 글자는 소문자로, 이후 단어의 첫 글자는 대문자로 쓰는 표기법입니다.
- LowerCamelCase 라고도 합니다.
- 주로 변수명과 매개변수명에 사용됩니다.
- 예:
myVariable
,myMethod
.
snake_case
- 모든 글자를 소문자로 작성하며, 단어와 단어 사이에 밑줄(
_
)을 사용하는 표기법입니다. - 주로 데이터베이스 필드명이나 특정 설정 파일에서 사용됩니다.
- 예:
my_variable
,user_id
.
K&R 스타일
- 중괄호
{ }
를 제어 구조의 같은 줄에 배치하는 코딩 스타일입니다. Kernighan and Ritchie
스타일이라고도 합니다.
if (condition) {
// code block
}
Allman 스타일
- 중괄호
{ }
를 항상 새로운 줄에 배치하는 코딩 스타일입니다. - 이 방식은 코드의 가독성을 높이는 데 유용합니다.
if (condition)
{
// code block
}
네이밍 규칙
클래스 및 메서드 이름
클래스와 메서드 이름은 PascalCase로 작성하며, 각 단어의 첫 글자는 대문자로 시작합니다. 클래스 이름은 해당 클래스의 역할을 명확하게 나타내야 하며, 메서드 이름은 동사 또는 동사구로 작성하여 기능을 설명해야 합니다.
public class OrderProcessor
{
public void ProcessOrder()
{
// 코드
}
}
인터페이스 이름
인터페이스 이름은 I 접두사를 붙이고 PascalCase로 작성합니다.
public interface IOrderService
{
void ProcessOrder();
}
매개변수 이름
매개변수 이름은 camelCase로 작성하며, 의미 있는 이름을 사용하여 가독성을 높여야 합니다.
public void SubmitOrder(int orderId, string customerName)
{
// 코드
}
변수 및 필드 이름
로컬 변수와 필드는 camelCase로 작성하며, 첫 글자는 소문자로 시작합니다. 변수와 필드의 목적을 명확히 드러내기 위해 의미 있는 이름을 사용해야 합니다.
int customerCount;
string customerName;
컬렉션 및 배열 이름
- 컬렉션 및 배열 변수명은 복수형으로 작성하는 것이 일반적입니다. 이를 통해 단일 값과 여러 값을 명확하게 구분할 수 있습니다.
- 예:
orderList
,customerArray
.
List<Order> orderList = new List<Order>();
int[] customerIds = new int[10];
상수 및 정적 읽기 전용 필드 이름
상수는 모두 대문자로 작성하며, 단어 사이에 밑줄을 사용해 구분합니다. 정적 읽기 전용 필드는 PascalCase를 사용합니다.
const int MAX_CONNECTIONS = 100;
private static readonly int DefaultTimeout = 60;
비동기 메서드 이름
- 비동기 메서드의 이름은 반드시
Async
접미사를 사용하여 비동기 작업임을 명시해야 합니다. 이는 호출자가 해당 메서드가 비동기적으로 동작함을 알 수 있도록 돕습니다. - 예:
FetchDataAsync
,SaveChangesAsync
.
public async Task FetchDataAsync()
{
// 비동기 작업 코드
}
Lambda 표현식 및 LINQ 구문
- Lambda 표현식이나 LINQ 구문을 사용할 때는 코드의 가독성을 높이기 위해 적절한 줄바꿈과 들여쓰기를 사용합니다. 특히, 복잡한 쿼리 구문은 가독성에 중점을 두어 작성해야 합니다.
var orders = orderList
.Where(order => order.Status == "Pending")
.OrderBy(order => order.OrderDate)
.ToList();
중괄호 및 들여쓰기
중괄호 스타일
중괄호는 항상 새 줄에서 시작하며, 가독성을 높이기 위해 K&R 스타일 대신 Allman 스타일을 권장합니다.
if (isActive)
{
StartProcess();
}
else
{
StopProcess();
}
들여쓰기
들여쓰기는 공백 4칸을 사용하며, 모든 코드 블록의 들여쓰기를 일관되게 유지합니다.
public void ProcessOrder()
{
if (orderIsValid)
{
SubmitOrder();
}
else
{
CancelOrder();
}
}
공백 및 줄바꿈
공백 처리
연산자, 쉼표, 조건식에서 적절한 공백을 사용해 가독성을 높여야 합니다. 함수나 메서드 호출 시 괄호 안에는 공백을 사용하지 않습니다.
int result = a + b;
if (value == 10)
{
ProcessData();
}
줄바꿈
코드가 너무 길어질 경우 적절히 줄바꿈을 사용해 가독성을 유지합니다. 메서드 간 또는 큰 논리적 단위 간에는 한 줄의 빈 줄을 사용하여 구분을 명확히 해야 합니다.
var result = Calculate(a, b,
c, d);
주석
XML 주석
클래스, 메서드, 속성 등에 대해 XML 주석을 사용하여 문서를 자동 생성할 수 있도록 합니다. 주석은 코드의 동작과 의도를 명확하게 설명해야 합니다.
/// <summary>
/// 두 숫자의 합을 계산합니다.
/// </summary>
/// <param name="x">첫 번째 숫자</param>
/// <param name="y">두 번째 숫자</param>
/// <returns>두 숫자의 합</returns>
public int Add(int x, int y)
{
return x + y;
}
코드 주석
복잡한 논리나 중요한 코드를 설명하기 위해 필요한 경우 주석을 추가합니다. 그러나 주석 없이도 코드 자체가 명확하도록 작성하는 것이 중요합니다.
// 주문 데이터를 데이터베이스에 저장합니다.
SaveOrder(order);
TODO 주석
- 코드가 완료되지 않았거나 추후 수정이 필요할 때,
TODO
주석을 사용하여 해당 부분을 명시합니다. 이를 통해 협업 시 중요한 수정 사항을 쉽게 파악할 수 있습니다. - 비주얼스튜디오를 비롯한 대부분의 IDE 는
TODO
주석을 특별하게 인식하여 이를 기반으로 자동 리스트를 생성해 줍니다. 개발자는 이 리스트를 통해 남아 있는 작업을 한눈에 확인할 수 있고, 필요한 작업을 빠르게 찾아갈 수 있습니다.
// TODO: 이메일 발송 기능 추가 필요
SendOrderConfirmation(order);
제어 구문
if-else 구문
if-else 구문에서는 항상 중괄호를 사용하며, 단일 구문일지라도 중괄호를 생략하지 않는 것이 좋습니다.
if (isValid)
{
ApproveOrder();
}
else
{
RejectOrder();
}
switch 구문
switch 구문에서는 각 case에 break를 포함하며, default 구문을 항상 추가해야 합니다.
switch (status)
{
case Status.Pending:
StartProcessing();
break;
case Status.Complete:
FinalizeOrder();
break;
default:
HandleError();
break;
}
예외 처리
예외 처리
예외 처리는 가능한 구체적으로 작성하며, 반드시 필요한 경우에만 예외를 처리합니다. try-catch 블록에서 구체적인 예외 유형을 명시하고, 적절한 로그 메시지를 기록해야 합니다.
try
{
ExecuteTransaction();
}
catch (InvalidOperationException ex)
{
LogError(ex);
}
결론
닷넷 코딩 규칙과 스타일 가이드는 코드의 일관성을 유지하고, 가독성과 유지보수성을 높이는 데 중요한 역할을 합니다. 이러한 규칙을 따르면 팀 프로젝트에서 코드 품질이 향상되며, 장기적으로 유지보수가 용이한 코드를 작성할 수 있습니다. 이러한 규칙을 표준화하여 모든 개발자가 일관된 스타일로 코드를 작성하도록 하는 것이 매우 중요합니다.