refactoring 3: Bad smell?

코드에서 나는 악취 제거하기
refactoring

기이한 이름 (Mysterious Name)


중복 코드 (Duplicated Code)


긴 함수 (Long Function)


긴 매개변수 목록 (Long Parameter List)


전역 데이터 (Global Data)


가변 데이터 (Mutable Data)


뒤엉킨 변경 (Divergent Change)


산탄총 수술 (Shotgun Surgery)


기능 편애 (Feature Envy)


데이터 뭉치 (Data Clumps)


기본형 집착 (Primitive Obsession)


반복되는 switch문


반복문


성의 없는 요소 (Lazy Element)


추측성 일반화 (Speculative Generality)


임시 필드 (Temporary Field)


메시지 체인 (Message Chains)

managerName = aPerson.department.manager.name;

// 아래처럼 사용해서 체인을 숨길 수 있다.
reportAutoGenerator.report(aPerson);


중개자 (Middle Man)


내부자 거래 (Insider Trading)


서로 다른 인터페이스의 대안 클래스들


데이터 클래스 (Data Class)


상속 포기 (Refused Bequest)


주석