메뉴 닫기

[리팩토링]구린내 나는 코드

구린내 나는 코드 (응집도가 낮고 결합도가 높은 코드)

  1. 중복 코드메소드 추출, 템플릿 메서드 형성, 알고리즘 전환,클래스 추출, 모듈 추출
  2. 장황한 메서드메소드를 쪼갬, 메소드명은 기능자체를 나타내는 이름으로 정해야함, 임시변수를 베소드 호출로 전환, 메서드 체인으로 전환, 객체로 전환, 조건문 쪼개기, 컬렉션 클로저 메소드로 전환
  3. 방대한 클래스인스턴스 변수 제거를 위한 클래스 추출, 하위 클래스 추출, 모듈 추출, 인터페이스 추출, 관츨 데이터의 복제
  4. 과다한 매개 변수매개 변수가 너무 많으면 일관성이 없어지고 지속적인 수정이 발생, 메서드로 전환
  5. 수정의 산발수정 points 개발자가 찾을 없는 상황. 변경 객체로 분리, 클래스 추출
  6. 기능의 산재수정할때 같은 곳을 여러번 고쳐야할 . 메서드 이동, 필드 이동으로 수정 points 하나의 클래스에 넣어야함. 클래스 내용 직접 삽입
  7. 잘못된 소속메서드가 자신이 속하지 않은 클래스에서 많이 호출 될때. 메서드 이동, 메서드 추출, 방문자 패턴/전략 패턴은 예외
  8. 데이터 뭉치데이터 뭉치가 여러 위치에 몰려 있는 경우. 클래스 추출, 객체로 전환, 객체를 통째로 전달
  9. 강박적 기본 타입 사용데이터 값을 객체로 전환, 클래스로 전환,상태/전략 패턴으로 전환
  10. switch메서드 추출, 하위 클래스로 전환, 상태/전략 패턴으로 전환, switch문은 재정의가 필요
  11. 평형 상속 계측메서드 이동, 필드 이동
  12. 직무유기 클래스기능이 축소된 클래스, 사용하지 않는 클래스, 계층 병합, 클래스 내용 직접 삽입
  13. 막연한 범용 코드향후 사용을 대비해 준비하지만 결국 직무유기 클래스가 되는 경우. 계층 변합, 클래스 내용 직접 삽입, 메서드명 변경
  14. 임시 필드특정 상황에서만 사용되는 필드, null 객체에 위임, 클래스 추출
  15. 메세지 체인연속적인 메세지간의 호출. 대리 객체 은폐, 메서드 추출, 메서드 이동으로 체인 아래로 이동시킴
  16. 과잉 중개 메서드과잉 중개 메서드 제거, 내용 직접 삽입, 위임을 상속으로 전환(하위클래스 전환)
  17. 지나친 관여메서드 이동, 필드 이동, 대리 객체 은폐, 상속을 위임으로 전환
  18. 인터페이스가 다른 내용 클래스메서드명 변경 , 상위 클래스 추출
  19. 미흡한 라이브러리 클래스외부 클래스 메서드 추가, 상속 확장 클래스
  20. 데이터 클래스메서드 이동, 메서드 추출
  21. 방치된 상속물메서드 하향, 필드 하향, 상속을 위임으로 전환
  22. 불필요한 주석구린내 나는 코드를 장호아한 주석으로 가리는것은 금지. 메서드 추출, 메서드명 변경을 통해 주석이 아닌 코드로 기능을 설명할 있어야 .

리팩토링 : 코드품질을 개선하는 객체지향 사고법