코드에서 나는 악취 💩

나쁜 냄새가 나는 코드의 종류


  • 기이한 이름 (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

© 2021. All rights reserved.

----------Powered by Hydejack----------

woobaeh