리펙터링 (8.7 반복문 쪼개기)

hyeok·2022년 7월 22일
0

개인적으론 이 책에서 가장 인상적인 리펙터링이다.

let average = 0;
let totalSalary= 0;
for(const p of people){
	average += p.age
    totalSalary += p.salary
}
averageAge = average /people.length;

파이프라인으로 안한 것 빼고는 그냥 평범해보이는 for 문이다.
그러나 저자는 이러한 for 문이 두 각기 다른 개체를 한번에 연산하는 것에 대해 문제를 삼는다.

let totalSalary = 0
for (const p of people){
...
}

let averageAge =0
for (const p of people {
...
}

averageAge = averageAge /people.length

언뜻보면 for문이 두번 반복되기 때문에 중복되는 연산이 있고 최적화가 안된다.
하지만 저자는 리펙토링은 성능을 감수하고! 유지보수와 디버깅을 위해서 하는 것이라고 이야기한다.
저자 말대로 한번에 해놓으면 디버깅하기가 어렵고 두개가 디펜던시라도 있을 경우 곤란해지며 해당 for 문이 어떤 역할을 하는지에 대해 명확하지 않을 수 있다.
나는 저자의 의도를 function의 SRP(single responsibility principle)이랑 비슷한 개념으로 이해했다.

profile
내가 만든 소프트웨어가 사람들을 즐겁게 할 수 있기 바라는 개발자

0개의 댓글