클래스 기반코드이기 때문에 객체 지향 프로그래밍에 익숙한 사람이라면 더 편하게 느낄 것이다. 하지만 객체 지향적으로 만들수록 코드가 점점 더 장황해지는 것을 볼 수 있는데, 이것이 객체 지향 프로그래밍의 특징이다. 반면에 함수형 스타일의 코드는 더 간결한 경우가 많으며, 이러한 이유로 많은 사람이 함수형 스타일을 선택하기도 한다.
테스트의 유지 보수성도 이야기해 보자. 이 클래스로 또 다른 테스트를 작성할 때, 생성자를 사용하여 클래스를 만드는 과정을 팩토리 함수로 분리하면 좋다. 이렇게 하면 생성자 함수의 로직이 변경되어 다수의 테스트가 한꺼번에 깨지더라도 생성자 함수만 수정하면 테스트를 다시 복구할 수 있기 때문이다. 다음 예제를 살펴보자.
예제 3-11 헬퍼 팩토리 함수 추가하기
// stub-time/02-inject-object/password-verifier-time02.spec.js
describe('refactored with constructor', () => {
const makeVerifier = (rules, dayFn) => {
return new PasswordVerifier(rules, dayFn);
};