Skip to content

Code smell

pamiers edited this page Jan 16, 2019 · 6 revisions

중복된 코드 (Duplicated Code)

  • 한 곳 이상에서 중복된 코드 구조가 나타난다면, 그것을 합쳐서 프로그램을 개선할 수 있다.
  • Extract Method

긴 메소드 (Long Method)

  • 메소드에 파라미터와 임시변수가 많다면 Extract Method드 하기 힘듬.
  • 최대한 파라미터와 임시변수를 제거하고 그것도 힘들다면 Object를 생성하자

거대한 클래스 (Large Class)

  • 클래스 하나가 많은 일을 하려 할 때, 지나치게 많은 인스턴스 변수가 나타난다.
  • 이는 중복된 코드가 존재할 확률이 높다.
  • 거대하다는 건 많은 책임을 가지고 있다는 의미.
  • 클래스 내에서 서로에게 의미가 있는 변수를 골라서 묶는 작업을 하자.

긴 파라미터 리스트 (Long Parameter List)

  • 긴 파라미터 리스트는 이해하기 어렵다.
  • 다른 데이터가 필요할 떄마다 고쳐야함.

확산적 변경 (Divergent Change)

  • 하나의 클래스가 다른 이유로 인해 다른 방법으로 자주 변경되는 경우
  • 하나의 클래스가 여러 책임을 가지고 있기 때문임.

산탄총 수술 (Shotgun Surgery)

  • 변경을 할 때마다 많은 클래스를 조금씩 수정해야 하는 경우.
  • 변경해야 할 부분을 하나의 클래스로 몰자.

기능에 대한 욕심 (Feature Envy)

  • 메소드가 자신이 속한 클래스보다 다른 클래스에 관심을 가지는 경우
  • 어떤 값을 계산하기 위해 get 메소드를 호출하는 경우, 위임하는 것이 적절하다고 볼 수 있다.

데이터 덩어리 (Data Clump)

Clone this wiki locally