[c#] 리팩터링 테크닉
리팩터링은 코드를 개선하고 재구성하여 가독성을 향상시키고 유지보수를 쉽게하는 과정입니다. 이번 글에서는 C#에서의 리팩터링 중 일부 테크닉을 알아보겠습니다.
1. 메서드 추출
메서드 추출은 코드 중복을 줄이고 가독성을 향상시키는 방법입니다.
// 리팩터링 전
public void CalculateTotalPrice(int quantity, int unitPrice)
{
// 수행 로직
int totalPrice = quantity * unitPrice;
// 출력
Console.WriteLine("Total Price: " + totalPrice);
}
// 리팩터링 후
public void CalculateTotalPrice(int quantity, int unitPrice)
{
int totalPrice = CalculatePrice(quantity, unitPrice);
DisplayPrice(totalPrice);
}
private int CalculatePrice(int quantity, int unitPrice)
{
return quantity * unitPrice;
}
private void DisplayPrice(int totalPrice)
{
Console.WriteLine("Total Price: " + totalPrice);
}
2. 조건문 분해
복잡한 조건문을 여러 개의 간단한 조건문으로 분해하여 가독성을 향상시킵니다.
// 리팩터링 전
if (isSpecialDeal() && (totalPrice > 1000))
{
GiveDiscount();
}
// 리팩터링 후
if (IsSpecialDeal() && IsTotalPriceOverThreshold())
{
GiveDiscount();
}
private bool IsSpecialDeal()
{
// 특별 할인 여부 확인 로직
}
private bool IsTotalPriceOverThreshold()
{
// 총 가격이 임계값 이상인지 확인하는 로직
}
3. 클래스 분해
하나의 클래스에 많은 책임이 부여되어 있는 경우, 클래스를 분해하여 각 기능을 독립적인 클래스로 만들어 가독성을 향상시킵니다.
// 리팩터링 전
public class UserManager
{
public void RegisterUser(User user)
{
// 사용자 등록 로직
}
public void AuthenticateUser(User user)
{
// 사용자 인증 로직
}
}
// 리팩터링 후
public class UserManager
{
private UserRegistration _userRegistration;
private UserAuthentication _userAuthentication;
public void RegisterUser(User user)
{
_userRegistration.Register(user);
}
public void AuthenticateUser(User user)
{
_userAuthentication.Authenticate(user);
}
}
public class UserRegistration
{
public void Register(User user)
{
// 사용자 등록 로직
}
}
public class UserAuthentication
{
public void Authenticate(User user)
{
// 사용자 인증 로직
}
}
위에서 언급한 테크닉들을 사용하여 코드를 리팩터링하면 유지보수가 용이한 코드를 작성할 수 있습니다. 이를 통해 더 나은 가독성과 유연성을 갖춘 C# 코드를 작성할 수 있습니다.
참고 자료
- Fowler, M. (2019). Refactoring: Improving the Design of Existing Code (2nd Edition). Addison-Wesley Professional.