코드에서 나는 악취 💩
카테고리 : Study >> Til
나쁜 냄새가 나는 코드의 종류
- 기이한 이름 (Mysterious Name) 코드 이해력, 가독성 ⬇️
- 중복 코드 (Duplicated Code) 실수와 에러 발생 ⬆️
- 긴 함수 (Long Function) 이해하기 어렵고, 재사용성 ⬇️
- 긴 매개변수 목록 (Long Parameter List) 사용하기 어렵고 잦은 실수 유발
- 전역 데이터 (Global Data) 최악이고 찾기 힘든 버그 발생
- 가변 데이터 (Mutable Data) 예상하지 못한 곳에서 데이터를 변경
- 뒤엉킨 변경 (Divergent Change) 다양한 이유로 수정을 해야 함
- 샷건 수술 (Shotgun Surgery) 여러 곳에서 수정해야 함
- 기능 편애 (Feature Envy) 다른 모듈과 더 밀접하게 상호작용
- 데이터 뭉치 (Data Clumps) 여러 곳에서 항상 함께 쓰임
- 기본형 집착 (Primitive Obsession) 관련된 코드가 여기저기
- 반복되는 switch 문 (Repeated Switches) 새로운 타입이 추가되면 여기저기 업데이트
- 반복문 (Loops) 절차형의 코드 => Side Effect
- 성의 없는 요소 (Lazy Element) 불필요한 함수, 클래스 , 인터페이스
- 추측성 일반화 (Speculative Generality) 혹시 모르니, 미래를 위해서
- 임시 필드 (Temporary Field) 특정한 상황에서만 사용, 이해도 ⬇️
- 메시지 체인 (Message Chains) 내부 로직이 노출됨
- 중개자 (Middle Man) 단순 전달만 하는 불필요한 코드
- 내부자 거래 (Insider Trading) 모듈 사이 데이터 거래 => 결합도 ⬆️
- 거대한 클래스 (Large Class) 중복 코드 ⬆️ 뒤엉킨 변경 ⬆️
- 서로 다른 인터페이스의 대안 클래스 (Alternative Classes with Different Interfaces)
서로 대체성 ⬇️, 재사용성 ⬇️ - 데이터 클래스 (Data Class) 필요한 로직이 여기저기
- 상속 포기 (Refused Bequest) 상속의 오용, 남용은 위험
- 주석 (Comments) 필요없는 주석은 Nope