본문 바로가기
Study/개발 지식

[개발 지식] 클린코드와 리팩토링

by 스테디코디스트 2023. 10. 24.
반응형

1. 클린 코드

- 가독성이 높은 코드

- 코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 함

- 다른 사람이 코드를 봐도 자유롭게 수정이 가능

- 변경된 내용이 어떻게 상호작용하는지 이해하는 시간을 최소화 시키는 것

 

- 가독성을 높이는 방법

1) 의미있는 네이밍

2) 오류 제거

3) 중복 제거

4) 의존성 최소화

5) 클래스, 메소드가 한가지 일만 처리

6) 보기 좋게 배치하기

7) 주석 달기

 

2. 클린 코드 예시

// 클린 코드 변경 전
public int A(int a)
{
	return a * a;
}

// 클린 코드 변경 후 -> 의미있는 네이밍
public int Square(int num)
{
	return num * num;
}

 

3. 리팩토링

- 프로그램의 외부 동작은 그대로 두고, 내부 코드를 정리하면서 개선하는 것

- 프로젝트가 끝난 뒤, 가독성이 떨어지는 부분을 개선시키는 작업

- 코드품질 및 가독성 향상과 더불어 향후 유지보수에 도움이 됨

 

- 리팩토링이 필요한 코드

1) 중복 코드

2) 긴 메소드

3) 거대한 클래스

4) Switch문

5) 절차지향으로 구현한 코드

 

4. 리팩토링 예시

// 리팩토링 전
public int getPrice(int a1, int a2)
{
	return a1 * a2;
}

-------------------------------------------------------------------------------------

// 리팩토링 후 -> 함수명, 변수명을 의미에 맞게 수정
public int getTotalPrice(int price, int amount)
{
	return price * amount;
}
// 1. 리팩토링 전
public int getTotalPrice(int price, int amount, double discount)
{
	return (int)((price * amount) * (price * amount) * (discount / 100));
}

-------------------------------------------------------------------------------------

// 2. 리팩토링 후 -> 중복 제거, 함수 추출
public int getTotalPrice(int price, int amount, double discount)
{
	int totalPrice = price * amount;
    
    return (int)(totalPrice - getDiscountPrice(discount, totalPrice))
}

private double getDiscountPrice(double discount, int totalPrice) 
{
	return totalPrice * (discount / 100);
}

-------------------------------------------------------------------------------------

// 3. 한번 더 리팩토링 -> 함수 추출(추출한 함수는 모두 private으로 선언)
public int getPrice(int price, int amount, discount)
{
	int totalPrice =  getTotalPriceAmount(price, amount);
    
    return (int)(totalPrice - getDiscountPrice(discount, totalPrice))
}

private double getDiscountPrice(double discount, int totalPrice)
{
	// 할인율을 구하는 함수
	return totalPrice * (discount / 100);
}

private double getTotalPriceAmount(int price, int amount) 
{
	// 합계를 구하는 함수
	return price * amount;
}

cf) 참고자료

 

클린코드와 리팩토링 | 👨🏻‍💻 Tech Interview

클린코드와 리팩토링 클린코드와 리팩토링은 의미만 보면 비슷하다고 느껴진다. 어떤 차이점이 있을지 생각해보자 클린코드 클린코드란, 가독성이 높은 코드를 말한다. 가독성을 높이려면 다

gyoogle.dev