본문 바로가기
java/java 리팩토링

리팩토링이란

by 문자메일 2023. 2. 6.

리펙토링

  • 외부에서 보는 프로그램의 기능은 변하지 않고 프로그램 내부 구조를 개선하는 것
  • 프로그램의 동작이 변하지 않음을 증명하기 위해 유닛테스트가 필요하다
    • 테스트 -> 리펙토링 -> 테스트
  • 디버깅과 기능 추가는 리펙토링이 아니다.

 

리펙토링의 여러 방법

  • 메서드나 클래스가 겹치는 경우 -> 분리
  • 메서드나 클래스의 기능이 너무 많고 긴 경우 -> 메서드와 클래스를 따로 추출한다.
  • 변수, 메서드, 필드명, 패키지명등이 안맞는 경우 -> 이름을 이해하기 쉽게 변경
  • public으로 선언된 것이 너무 많은 경우 -> 인스턴스 이름을 숨기고 싶을때는 팩토리 메서드 등의 방법 활용
  • switch문이나 if-else if 문의 남용으로 여러 분류조건이 반복되는 경우 클래스화 검토 -> 전략패턴이나 상태 패턴으로 변경 가능

 

코드에서 나는 악취

  • 너무 긴 메서드 : 메서드가 너무 길다
  • 방대한 클래스 : 클래스의 필드와 메서드가 너무 많다
  • 변경 발산 : 기능의 변경시 많은 곳을 수정해야 한다
  • 속성, 조작 끼어들기 : 언제나 다른 클래스의 내용을 수정하게 하는 클래스가 있다.
  • if, switch문 : 조건분기가 너무 반복적이고 많다.
  • 과다한 매개 변수 : 메서드가 받는 매개 변수의 수가 너무 많다.

리팩토링 하는 이유

  • 프로그램의 수정, 기능 추가를 쉽게 하기 위해

댓글