DEV ℧ Developer Diary

[Refactoring] 냄새 21. 서로 다른 인터페이스의 대안 클래스들

해당 포스트는 inflearn의 백기선님의 강의인 리팩토링 을 듣고 정리한 글입니다.

냄새 21. 서로 다른 인터페이스의 대안 클래스들

  • 비슷한 일을 여러 곳에서 서로 다른 규약을 사용해 지원하고 있는 코드 냄새.
  • 대안 클래스로 사용하려면 동일한 인터페이스를 구현하고 있어야 한다.
  • “함수 선언 변경하기 (Change Function...

[Refactoring] 냄새 20. 거대한 클래스

해당 포스트는 inflearn의 백기선님의 강의인 리팩토링 을 듣고 정리한 글입니다.

냄새 20. 거대한 클래스

  • 어떤 클래스가 너무 많은 일을 하다보면 필드도 많아지고 중복 코드도 보이기 시작한다.
  • 클라이언트가 해당 클래스가 제공하는 기능 중에 일부만 사용한다면 각각의 세부기능을 별도의 클래스로 분리할 수 있다.
      ...

[Refactoring] 냄새 19. 내부자 거래

해당 포스트는 inflearn의 백기선님의 강의인 리팩토링 을 듣고 정리한 글입니다.

냄새 19. 내부자 거래

  • 어떤 모듈이 다른 모듈의 내부 정보를 지나치게 많이 알고 있는 코드 냄새. 그로인해 지나치게 강한 결합도(coupling)가 생길 수 있다.
  • 적절한 모듈로 “함수 옮기기 (Move Function)”와 “필드 옮기기 (Move...

[Refactoring] 냄새 18. 중재자

해당 포스트는 inflearn의 백기선님의 강의인 리팩토링 을 듣고 정리한 글입니다.

냄새 18. 중재자

  • 냄새 17. 메시지 체인과 반대되는 리팩토링 방법이다.
  • 캡슐화를 통해 내부의 구체적인 정보를 최대한 감출 수 있다.
  • 그러나, 어떤 클래스의 메소드가 대부분 다른 클래스로 메소드 호출을 위임하고 있다면 중재자를 제거하고...

[Refactoring] 냄새 17. 메시지 체인

해당 포스트는 inflearn의 백기선님의 강의인 리팩토링 을 듣고 정리한 글입니다.

냄새 17. 메시지 체인

  • 레퍼런스를 따라 계속해서 메소드 호출이 이어지는 코드
    • 예) this.member.getCredit().getLevel().getDescription()
  • 해당 코드의 클라이언트가 코드 체인을 모두 이해해야 한다.
  • 체인 중 일부가 변경된가면 클라이언트의 코드도 변경해야 한다.
  • ...