단일 책임 원칙은 함수는 단 하나의 일만 해야 한다는 원칙이 아니라 사실은 "단일 모듈은 변경의 이유가 하나, 오직 하나뿐이어야 한다." 라는 의미이다. 우발적 중복 단일 책임 원칙을 위반하는 대표적 사례인 우발적 중복을 살펴보자. Employee 클래스가 아래 세 가지 메서드를 가지고 있다. calculatePay() : 회계팀에서 기능을 정의하며, CFO 보고를 위해 사용 reportHours() : 인사팀에서 기능을 정의하며, COO 보고를 위해 사용 save() : 데이터베이스 관리자가 기능을 정의하며, CTO 보고를 위해 사용 calulatePay() 메서드와 reportHours() 메서드가 업무 시간을 계산하는 regularHours() 메서드를 동시에 사용한다고 했을때 CFO 팀에서 업무 ..