리팩토링의 개념..!
[What] 리팩토링이란?
코드를 깨끗하게 만드는 작업
리팩터링(refactoring)n. 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법
리팩터링:v. 소프트웨어의 겉보기 동작은 그대로 유지한 채 여러가지 리팩터링 기법을 적용해서 소트웨어를 재구성하다
위키피디아 says… 결과/행동 변경 없이 코드의 구조를 재조정
한마디로 말하면 소프트웨어 기능을 보존하면서 설계, 구조 및 구현을 개선하는 것
[Goals] 리팩토링의 목표
- 복잡성 감소
- 유지 보수성을 개선
- 확장성을 높임
- 가독성 향상
=> 더 단순하게, 깔끔하고 표현력이 뛰어난 코드, 내부 아키텍쳐/객체 모델을 만듬
[Don’t] 리팩토링할때 금지사항
- 기능 변경/추가
- 버그 수정 (리팩토링이 끝나고 나서 해당 버그에 대해 따로 수정)
- 성능개선
- 라이브러리 또는 dependency 버전 업데이트
[Why] 그렇다면 왜 리팩토링을 하지? (Why?)
- 개발 초기 단계부터 완벽한 코드/시스템 설계의 어려움
- 복잡한 코드는 이해하기 어렵고 유지보수도 어려움
- 프로그램의 요구사항은 꾸준히 변경될 것.
- 예상하지 못한 에러 예방.
- 버그를 쉽게 찾을 수 있다.
- 프로그래밍 속도를 높일 수 있다.
[How] 어떻게 하는 걸까?
- 기존 코드에서 동작하는 기능을 유지(함수, 기능, UI, 성능, API 스펙)해야 한다.
- 그 검증을 위해 테스크 코드를 작성해서 테스트 한다.
- 코드의 부족한 부분에 따라서 여러 리팩토링 기법을 조금씩 적용 시킨다.
[When] 언제 해야 할까? => 수시로
프로젝트 시작단계 | 유지보수 단계 |
---|---|
기능 구현을 위한 코드 작성 | ⬇️ 버그수정 / ⬇️ 기능 추가 or 라이브러리 디펜던시 업데이트 |
테스트 코드 작성 | 버그 검증할 테스트 코드 / 기존 기능들의 테스트 확인 |
리팩토링 | 코드를 이해하기 쉽게 변경하기 쉽게 만듬 / 코드를 쉽게 변경 |
코드리뷰 => 이해하기 쉽게 만들기 | 리팩토링 / 리팩토링 |
기능 추가 => 재사용성, 모듈화 | 버그 수정 / 기능 추가 |
3의 법칙: 비슷한 일을 3번 하게 되면 리팩토링 한다
중요 포인트 정리
- 코드를 깨끗하게
- 결과/행동 변경 없이 코드의 구조를 재조정
- 소프트웨어 기능 보존하면서 설계, 구조 및 구현을 개선.
- 소프트웨어 기능 보존 검증을 위한 테스트 코드 작성!
- 무결점 , 완벽한 설계는 존재하지 않는다…!
- 3의 법칙