본문 바로가기

클린코드

[Refactoring] 정리 (1)

 

코딩으로 학습하는 리팩토링 - 인프런 | 강의

리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직

www.inflearn.com

| 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다.


가장 기본이 되는 리팩토링 기술

  • 함수 추출하기
  • 함수 인라인하기
  • 변수 추출하기
  • 변수 인라인하기
  • 함수 선언 변경하기 -> 함수 이름, 매개 변수, 리턴 타입... 변경
  • 변수 캡슐화하기
  • 변수 이름 바꾸기
  • 매개변수 객체 만들기
  • 여러 함수를 클래스로 묶기
  • 여러 함수를 변환 함수로 묶기
  • 단계 쪼개기

캡슐화

* 모듈에서 외부 시스템으로 공개하지 않아도 되는 데이터를 숨기는 기술

  • 레코드 캡슐화하기 -> public 필드를 private + 메서드
  • 컬렉션 캡슐화하기
  • 기본형을 객체로 바꾸기
  • 임시 변수를 질의 함수로 바꾸기
  • 클래스 추출하기
  • 클래스 인라인하기
  • 위임 숨기기
  • 중재자 제거하기 -> 불필요한 과정 제거
  • 알고리즘 교체하기

기능 옮기기

* 함수나 필드 또는 문장을 적절한 위치로 옮기는 기술

  • 함수 옮기기
  • 필드 옮기기
  • 문장을 함수로 옮기기
  • 문장을 호출한 곳으로 옮기기
  • 인라인 코드를 함수 호출로 바꾸기
  • 문장 슬라이드하기
  • 반복문 쪼개기 
  • 반복문을 파이프라인으로 바꾸기 -> 기능 없애기
  • 죽은 코드 제거하기 -> 기능 없애기

데이터 조직화

* 데이터 구조를 다루는 기술

  • 변수 쪼개기
  • 필드 이름 바꾸기
  • 파생 변수를 질의 함수로 바꾸기 -> 계산 결과를 변수로 선언하지 말고 식 자체를 사용하기
  • 참조를 값으로 바꾸기
  • 값을 참조로 바꾸기