Search

필드 수 줄이기

지난 피드백

지난 3주 차 피드백에서 "필드 수를 줄이기 위해 노력하라"라는 내용이 있었던 만큼, 이번 미션에서 필드 수를 최소화하고자 노력했다. 더불어, 피드백에 첨부된 아티클을 참고해 getter를 남발하지 않고 꼭 필요한 곳에 쓰고자 했다. (참고: getter를 사용하는 대신 객체에 메시지를 보내자)
3주 차 피드백 중 일부

예를 들어

처음에 Discount.js라는 도메인 모델과 핵심 로직을 구현할 때는 상단에 각 할인 유형을 별도의 필드로 관리했다. 주말 할인, 평일 할인, 특별 할인, 크리스마스 할인들을 각각의 필드로 나열하고, 그 필드를 getter를 활용해 각각 꺼내오다 보니 불필요하게 코드가 길어졌고 중복된 코드가 많아진 느낌이었다.
그래서 각각의 할인을 하나의 필드로 묶는 게 어떨까 생각했다. 아래와 같이 각 할인 유형에 대한 값을 속성으로 가지는 #discounts라는 객체를 만들어, 모든 할인 유형을 하나의 객체에서 관리했다.
constructor(date, orderDetails) { this.#date = date; this.#orderDetails = orderDetails; this.#discounts = { special: 0, weekend: 0, weekday: 0, christmas: 0, }; }
JavaScript
복사

하나의 필드로 묶은 효과

이렇게 묶고 나니, 아래에서 보이듯 코드 라인이 약 20줄가량 줄었고 불필요한 필드와 getter를 남발하지 않게 되었다. 필드 수가 많으면 객체의 복잡도를 높이고 버그 발생의 가능성을 높인다는 말을 실감했다. 리팩토링을 하고 나니 할인 객체를 관리하기가 훨씬 편해서 스스로 코딩하기에도 덜 어지러웠다.
Discount.js 리팩토링 전/후