[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# 코드를 작성할 수 있습니다.

참고 자료