1장: 리팩터링 리팩터링하기

이 책에서 소개된 규칙

  • 다섯중 제한
  • 호출 또는 전달 한가지만 할것
  • if문은 함수의 시작에만 배치
  • if문은 else를 사용하지 말것
  • switch를 사용하지 말것
  • 인터페이스에서만 상속 받을것
  • 순수 조건 사용
  • 구현체가 하나뿐인 인터페이스를 만들지 말것
  • getter/setter를 사용하지 말것
  • 공통 접사를 사용하지 말것

1장: 리팩터링 리팩터링하기

코드 스멜과 단위테스트를 가지고 리팩터링을 학습하는 방법은 진입 장벽이 너무 높다

리팩터링이란 무엇인가?

기능을 변경하지 않고 코드를 변경하는것

리팩터링을 해야 하는 이유

  • 코드를 더 빠르게 만들기 위해
  • 더 작은 코드를 만들기 위해
  • 코드를 더 일반적이거나 재사용 가능하게 하기 위해
  • 코드의 가독성을 높이고 유지보수를 용이하게 하기 위해

좋은코드 - 사람이 읽기 쉽고 유지보수가 용이하며 의도한 대로 잘 동작하는 코드

스킬: 무엇을 리팩터링할 것인가?

리팩터링은 코드 스멜과 함꼐 가르친다 하지마 코드스멜은 보는 감각을 키우는데 시간이 걸린다

문화: 리팩터링은 언제 할까?

리팩터링은 샤워와 같다 - 켄트 백

탐색 - 명세화 - 구현 - 테스트 - 리팩터링 - 전달

레거시 시스템에서의 리팩터링

우선 변경하기 쉽게 만든 후 변경 하라 - 켄트 백

언제 리팩터링을 하지 말아야 할까?

  • 한 번 실행하고 삭제할 코드 - xp 에서 스파이크로 알려진것
  • 폐기되기 전 유지보수 모드에 있는 코드
  • 임베디드 시스템이나 게임의 고급 물리엔진과 같인 엄격한 성능 요구사항이 있는 코드

도구: (안전한) 리팩터링 방법

  • 레시피처럼 상세하고 단계별로 구조화된 리팩터링 패턴
  • 버전관리
  • 컴파일러

참조