alt
Home 리팩터링 2장. 리팩터링 원칙
Post
Cancel

리팩터링 2장. 리팩터링 원칙


  • 리팩터링이란 작업 전과 후가 같은 동작을 수행하도록하는 Restructuring의 특수한 하나의 형태이다.


리팩터링을 하는 이유

  • (소프트웨어 설계) 규칙적인 리팩터링은 코드 구조를 지탱해준다. 중복 코드가 제거되고, 코드는 항상 고유한 일을 수행함을 보장할 수 있다.
  • (가독성) 소프트웨어를 이해하기 쉬워진다. 내 코드의 의도를 더 명확히 드러내도록 개선할 수 있다.
  • 버그를 쉽게 찾을 수 있다, 생산성 개선 등


리팩터링 진행

  • 준비를 위한 리팩터링: 코드베이스 변경 직전에 최선의 구조로 변경하는 리팩터링
  • 이해를 위한 리팩터링: 레거시를 분석할 때 or 복잡한 로직을 이해할 때 깊은 수준까지 로직을 이해하는데 도움이 된다.
  • 계획된 리팩터링과 수시로 하는 리팩터링


리팩터링 작업 분리

: 계획된 리팩터링과 수시로 하는 리팩터링을 수행하면서 팀에 맞는 방식을 도출해내기

  1. 작업 방식 차이: 계획된 리팩터링(커밋분리)를 통해 각 task 별 차이점을 인지하고 현재 어떤 작업에 초점을 두어야 할 지 확실히 할 수 있는 반면에 시간낭비일 수 있다. 수시로 하는 리팩터링은 생각날때마다 조금씩 변경을 줄 수 있다.
  2. (계획된 리팩터링) 형상 관리: 작은 단위의 리팩터링 작업을 통해 다른 사람이 히스토리를 명확히 알 수 있다.


Extreme Programing(XP)

: CI(Continuous Integration) + 리팩토링(Test)

  • XP: 통합(merge) 기간이 길어질수록 단위가 커지고, 많은 곳에서 리팩토링된 코드를 통합하는데 더 큰 어려움이 따른다. 이러한 측면에서 지속적 통합리팩토링과 연계되면 좋다.
  • test: 리팩터링 대상의 동작이 일관되어야하고, 신뢰성을 위해서 test case가 필요.
    • 테스트가 없는 경우, 안전하다고 검증된 몇 가지 리팩터링 기법만 사용하는 경우도 있다. (e.g. 자동 리팩토링)



Reference)

리팩터링 2판

This post is licensed under CC BY 4.0 by the author.

리팩터링 1장. 리팩터링 첫번째 예시

리팩터링 3장. 코드에서 나는 악취