생성자, 함부로 쓰지 마세요! 팩토리 함수와 lazy initialization으로 코드 품질 UP!
by DD
7개월 전
조회수 1
FooVideoPlayer 클래스의 생성자 사용 시 발생 가능한 문제점 지적
생성자 내 복잡한 로직 대신 팩토리 함수 또는 lazy initialization 활용 제안
prepare 호출 여부에 따른 예외 발생 방지 및 코드 안전성 확보 강조
생성자 문제점: 초기화 시점의 함정
FooVideoPlayer 클래스는 prepare() 호출 없이 play()를 호출하면 예외가 발생한다. 따라서 생성자 내에서 prepare 로직을 실행하거나, 팩토리 함수를 통해 인스턴스를 생성하는 방법을 고려해야 한다. 초기화되지 않은 변수 접근으로 인한 버그를 방지하는 것이 중요하다.
팩토리 함수 vs Lazy Initialization: 트레이드오프 분석
팩토리 함수는 생성자 제약 조건을 우회하고, prepare 로직을 캡슐화하여 코드 안전성을 높인다. Lazy initialization은 play() 호출 시점에 prepare를 실행하여 초기화 비용을 절감한다. 반면, 가변 변수(var) 사용은 코드 복잡성을 증가시킬 수 있다.
안전한 코드 설계를 위한 실전 가이드
생성자 대신 팩토리 함수를 사용하여 객체 생성 과정을 제어하고, 불변성(immutable)을 유지하는 것이 좋다. prepare() 호출 시점을 명확히 하고, prepare 전/후의 타입을 분리하여 컴파일 타임에 오류를 방지한다. 코드 품질 향상을 위해 지속적인 리팩토링을 수행해야 한다.