반응형
리팩토링의 중요성 feat.테스트 코드를 짜는 이유(한글 자막)
https://www.youtube.com/watch?v=mNPpfB8JSIU
아래 글로 리팩토링을 3분 만에 이해 하자..
✅ 리팩토링 워크플로우
리팩토링 절차 : 테스트 코드 > 기능 구현 > 리팩토링
리팩토링 절차 (TDD Refactoring)
- 테스트를 통과 못한 빨간불 상태에서 시작
- 적적한 테스트 시나리오를 고려 ( happy path, exception path, exist path)
- Unit Test 추가.
- 테스트는 잘되는 케이스, 예외 케이스, 하위 호환성을 모두 만족시켜야 한다.
- 우선 기능을 작동하게 만든다. 완벽하게 만들 필요 없다. ( 새로운 기능 추가 및 개선 ) -- step1
- 코드 스멜에 대해 리팩토링을 진행한다 ( 클리닝 ) -- step 2
- 테스트를 모두 통과하면 리팩토링 종료
코딩할 때는 기능 추가 모드와 리팩터링 모드를 왔다 갔다 한다.
왜 2단계로 쪼개서 진행을 하는가?
우리가 가진 모드 2가지
- 기능 추가 모드(1)
- 리팩 토링 모드(2)
리팩토링 주의점
- 리팩토링은 같은 기능을 하되 코드 구조를 변경하는것
- 심지어 버그가 발견되어도 고치면 안 된다.
- 항상 개발 시 어떤 모자를 쓰고 있는지 인지해야 한다.
다른 유사한 모드도 있다.
- 성능개선 모드(3) : 더 좋은 퍼포먼스로 코드를 수정
- 탐험 모드(4) : 새로운 아이디를 녹이고 버리는 모드
리팩토링을 해야 하는 상황
리팩토링을 할까 말까 고민될 때, 기준점들이 있다.
리팩토링의 상황 - 1 : 냄새나는 코드를 발견
- 조금씩 고친다.
- 조금씩 고쳐 나가다 보면 전체가 깔끔해진다.
- 쓰레기 줍기 리팩토링
리팩토링의 상황 - 2 : 코드를 보고 이해 불가
- 파편화하며 퍼즐 조각으로 나누고 이해한다.
- 이렇게 파편화된 지식(스파게티 코드) 리팩토링하여 머릿속 로직을 코드에 녹이는 것
- 이해하기 위한 리팩터링
리팩토링의 상황 - 3 : 새로운 기능이 기존 코드에 잘 녹을때
- 코드가 왜 이렇게 작동하는지 모르겠다.
- 여기다가 또 기능을 추가한다고?
- 준비를 위한 리팩토링
리팩토링의 상황 - 4 : 리팩토링 계획 세우기
- 프로젝트의 목표 중에 리팩토링을 추가한다.
- 그렇다고 억지로 찾을 필요는 없다.
- 계획된 리팩토링(Planned)
리팩토링의 상황 - 5 : 복잡하게 모듈의 의존성을 가질 때
- 장기적인 리팩토링(Long-Term)
리팩토링 시점
- 지금 우리가 당장 고쳐야 하나?
- 지금 하는 일에 지장이 없고, 시간이 얼마나 걸리는지 판단
- 메서드, 변수 이름 변경 등은 금방 한다.
- 당장의 기능 개발(미통과 테스트)가 있다면 이슈 티켓을 만들어두고 나중에 작업
리팩토링은 장기적인 관점에서 바라봐야 한다
✅ 리팩토링이 중요한 이유
주니어일 때 개발자들은 코드를 변경하지 않으려 했다.
- 한 번 더 일하고 시간 낭비라고 생각.
- Design Stamina Hypothesis.
- No Design : 프로젝트가 커질수록 -> 기능 추가가 어렵다.
- Good Design : 프로젝트가 커져도 오히려 -> 기능추가가 쉽다.
단 하나의 이유 : 경제성
키워드 TDD, 개발, 클린 코드, 테스트 주도 개발
반응형
'[Web]' 카테고리의 다른 글
[개발] 유용한 링크 정리, FrontEnd 개발자 책,문서 추천 링크 모음 (0) | 2022.11.15 |
---|