반응형
하나의 반복문에서 여러 다른 작업을 하는 코드를 쉽게 찾아볼 수 있다.
반복문을 여러개로 쪼개면 보다 쉽게 이해하고 수정할 수 있다.
성능 저하가 발생 할 수 있으나 미미하다.
리팩터링 이후에 반복문을 쪼개서 병목이라 밝혀지면 합치면 된다.
int averageAge = 0
int totalSalary = 0
for (auto people : peoples)
{
averageAge += people.age;
totalSalary += people.salary;
}
averageAge = averageAge / totalSalary;
위 코드는 사람의 평균 나이와 총 급여를 구하는 로직이다.
하나의 반복문에서 2가지의 의도를 가지고 있다.
1. 모든 사람 나이를 구한다.
2. 모든 사람 급여를 구한다.
int totalSalary = 0
for (auto people : peoples)
{
totalSalary += people.salary;
}
int averageAge = 0
for (auto people : peoples)
{
averageAge += people.age;
}
averageAge = averageAge / peoples.length();
위 코드 처럼 2번의 반복문으로 의도가 구분되게 나누면 읽기가 편해진다.
이 반복문들을 의도를 가진 함수로 추출하는 것도 고려할 수있다.
'리팩터링 > 리팩터링 기법' 카테고리의 다른 글
리팩터링 기법. 매개변수를 질의 함수로 바꾸기 (Replace Parameter with Query) (0) | 2023.02.25 |
---|---|
리팩터링. 조건문을 다형성으로 바꾸기(Replace Conditional with Polymorphism) (0) | 2023.02.23 |
리팩터링. 조건문 분해하기 (Decompose Conditional) (0) | 2023.02.21 |
리팩터링. 함수를 명령으로 바꾸기 (Replace Function with Command) (0) | 2023.02.20 |
리팩터링. 객체 통째로 넘기기 (Preserve Whole Object) (0) | 2023.02.19 |