개요
데이터가 어떻게 수정되는지 추적하는 일이 코드 파악에서 어려분 부분 중 하나다
특히 같은 데이터를 읽고 수정하는 곳이 여러 곳이라면 스크롤을 마구잡이로 이동하면서 봐야한다.
이런 이유로 데이터가 수정된 사실을 명확히 알리는 것은 중요하다.
수정 사실을 알리는 가장 좋은 것은 반환값으로 수정 대상 변수에 다시 담는 것이다.
코드 상으로도 수정된다는 사실이 명확해진다.
예시
let totalAscent = 0; let totalTime = 0; let totalDistance = 0; calculateAscent(); calculateTime(); calculateDistance(); const pace = totalTime / 60 / totalDistance; function calculateAscent(){ for(let i = 1; i<ProcessingInstruction.length;i++){ const verticalChange = points[i].elevation - points[i-1].elevation; totalAscent += (verticalChange>0) ? verticalChange : 0; } } |
totalAscent가 갱신된다는 사실이 명확하지 않다. |
let totalAscent = 0; let totalTime = 0; let totalDistance = 0; totalAscent = calculateAscent(); calculateTime(); calculateDistance(); const pace = totalTime / 60 / totalDistance; //값을 반환하도록 수정 function calculateAscent(){ for(let i = 1; i<ProcessingInstruction.length;i++){ const verticalChange = points[i].elevation - points[i-1].elevation; totalAscent += (verticalChange>0) ? verticalChange : 0; } return totalAscent; } |
function calculateAscent(){ let totalAscent = 0; //반환할 변수 선언 for(let i = 1; i<ProcessingInstruction.length;i++){ const verticalChange = points[i].elevation - points[i-1].elevation; totalAscent += (verticalChange>0) ? verticalChange : 0; } return totalAscent; } |
function calculateAscent(){ let result = 0; //적절한 이름으로 변경 for(let i = 1; i<ProcessingInstruction.length;i++){ const verticalChange = points[i].elevation - points[i-1].elevation; result += (verticalChange>0) ? verticalChange : 0; } return result; } |
const totalAscent = calculateAscent(); let totalTime = 0; let totalDistance = 0; calculateTime(); calculateDistance(); const pace = totalTime / 60 / totalDistance; function calculateAscent(){ let result = 0; //적절한 이름으로 변경 for(let i = 1; i<ProcessingInstruction.length;i++){ const verticalChange = points[i].elevation - points[i-1].elevation; result += (verticalChange>0) ? verticalChange : 0; } return result; } |
const totalAscent = calculateAscent(); const totalTime = calculateTime(); const totalDistance = calculateDistance(); const pace = totalTime / 60 / totalDistance; |
'IT책, 강의 > 리팩터링' 카테고리의 다른 글
11 - API 리팩터링 - 예외를 사전확인으로 바꾸기 (0) | 2023.09.23 |
---|---|
11 - API 리팩터링 - 오류 코드를 예외로 바꾸기 (0) | 2023.09.22 |
11 - API 리팩터링 - 명령을 함수로 바꾸기 (0) | 2023.09.20 |
11 - API 리팩터링 - 함수를 명령으로 바꾸기 (1) | 2023.09.19 |
11 - API 리팩터링 - 생성자를 팩터리 함수로 바꾸기 (0) | 2023.09.18 |