-
리팩터링 2판 - 2. 리팩토링 원칙Books/리팩터링 2판 2022. 6. 15. 13:07
2-1. 리펙토링이란 무엇인가?
Refactoring
- 결과 / 행동 변경 없이 코드의 구조를 재조정
- 소프트웨어 기능을 보존하면서 설계, 구조 및 구현을 개선
목표
ㆍ복잡성 감소
ㆍ가독성 향상
ㆍ유지 보수성을 개선
ㆍ확장성을 높임
→ 더 단순하고, 깔끔하고 표현력이 뛰어난 코드, 내부 아키텍처 / 객체 모델을 만든다.
금지
ㆍ기능 변경/추가
ㆍ버그 수정
ㆍ성능 개선
ㆍ버전 업데이트
- 리팩터링 : 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법
- 리팩터링은 코드를 깨끗하게 만드는( 개선하는 ) 작업
2-2. 리펙터링은 왜 필요할까?
- 개발 초기 단계부터 완벽한 코드/시스템 설계의 어려움
- 프로그램의 요구사항은 꾸준히 변경됨 ( 기능 추가 / 변경 )
- 더럽고 복잡한 코드는 이해하기 어려움
- 예상하지 못한 에러가 발생하기 쉬움
- 복잡한 코드의 유지보수는 어려움 ( 수정 시간이 오래걸림 )
결과
- 소트프웨어 설계가 좋아짐
- 소프트웨어를 이해하기 쉬워짐
- 버그를 쉽게 찾을 수 있음
- 프로그래밍 속도를 높일 수 있음
2-3. 어떻게 리펙토링을 하는걸까?
- code의 test 코드를 통해 여러 리펙토링 기법을 점진적으로 적용해 나감
2-4. 언제 리펙토링을 하는걸까?
- 수시로!
프로젝트 시작단계
- 좋은 디자인 패턴으로 코드를 깔끔하게 작성
- 기능 구현을 위한 코드를 작성
→ 테스트 코드를 작성
- 3의 법칙 : 비슷한 일을 세번째 하게 되면 리팩토링한다.
- 코드리뷰 : 코드를 이해하기 쉽게 만들기 → 좋은 문서화
- 기능추가 : 기능을 쉽게 추가하게 만들기 → 재사용성, 모듈성
프로젝트 유지보수 단계
- 버그수정 : 버즈를 검증할 수 있는 테스트 코드
→ 코드를 이해하기 쉽게, 변경하기 쉽게 변경 → 기능 추가
- 디펜던시 마이그레이션
오래된 프로젝트
- 버그 수정 및 기능 추가시에만 : 수정이 필요한 모듈/코드 한정적으로 테스트 추가 → 코드 수정 또는 기능 추가
- 때론, 새로운 코드를 작성하는 것이 빠름
2-5. 리펙토링의 중요한 포인트!
- " 무결점 클린코드, 완벽한 설계는 존재하지 않는다 "를 인정!
- YAGNI : You Ain't Gonna Need It
ㆍ깨끗하게 / 변경이 쉽게 / 유지보수 용이
ㆍ필요하지 않는 기능 X / 사용하지 않는 기능 X / 지나치게 미래지향적 X
'Books > 리팩터링 2판' 카테고리의 다른 글
리팩터링 2판 - 9. 데이터 조직화 (0) 2022.06.17 리팩터링 2판 - 8. 기능이동 (0) 2022.06.17 리팩터링 2판 - 7. 캡슐화 (0) 2022.06.16 리팩터링 2판 - 6. 기본적인 리팩터링 (0) 2022.06.15 리팩터링 2판 - 3. 코드에서 나는 악취 (0) 2022.06.15