리팩터링
리팩터링을 수행하는 이유는 다음과 같습니다
- 빠른 개발
- 좋은 설계
- 유지,보수성, 가독성이 좋아짐
사실 좋은 설계로 인해 자연스레 따라오는 장점들 같습니다. 그럼 리팩터링의 정의는 뭘까요?
코드의 핵심적인 기능은 유지하되, 코드의 구조를 변경함으로써 소프트웨어의 설계, 가독성, 유지 보수성을 높이는 작업
저같은 초보 개발자는 토이 프로젝트나, 팀을 이루어 프로젝트를 진행할 때 소프트웨어 기능 자체에 집중을 하다보니 확장성을 고려한 코드를 작성하기 힘들었습니다. 특히 외부 라이브러리 (Axios: 비동기 통신)를 프론트엔드 코드에서 임포트하여 쓸 때 이 문제가 와닿았습니다. 간단히 GET 호출 한 번이면 그닥 리팩터링을 할 이유가 없지만 다양한 API 호출을 수행해야 하기에 Axios 라이브러리 함수를 포장할 필요가 있었습니다.
그렇다면 테스트 코드를 작성하는 이유는 뭘까요? 리팩터링은 코드의 변경이 잦기 때문에 개발자의 실수로 변수를 빼먹었다든지, 잘못 로직을 변경했다든지 오류를 범하기 쉽습니다. 이를 막아주는 안전장치이자, 개발자가 진흙탕에 빠지는 것을 막아줍니다. 개발 속도는 아무런 교훈 없는 삽질에 반비례 한다고 생각하기 때문에, 저는 이런 일을 최소화 하고자 테스트 환경을 구축하기로 마음 먹었습니다. 테스트 기반이 마련되면 유지, 보수, 가독성 -> 좋은 설계 -> 빠른 개발 을 기대하며 리팩터링을 시작하겠습니다._