리팩터링 정의
'리팩터링(recatoring)'도 엔지니어들 사이에서 다소 두리뭉실한 의미로 통용된다. '리팩터링'이란 용어는 명사로도 쓸 수 있고, 동사로도 쓸 수 있다. 먼저 명사로 쓸 때는 다음과 같이 정의한다.
리팩터링: [명사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법
함수 추출하기와 조건부 로직을 다형성으로 바꾸기처럼 이름 붙은 리팩터링 기법들이 이 정의에 해당한다.
동사 버전의 리팩터링 정의는 다음과 같다.
리팩터링(하다): [동사] 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러 가지 리팩터링 기법을 적용해서 소프트웨어를 재구성한다.
리팩터링은 성능 최적화와 비슷하다. 둘 다 코드를 변경하지만 프로그램의 전반적인 기능은 그대로 유지한다. 단지 목적이 다를 뿐이다. 리팩터링의 목적은 코드를 이해하고 수정하기 쉽게 만드는 것이다. 프로그램 성능은 좋아질 수도, 나빠질 수도 있다. 반면 성능 최적화는 오로지 속도 개선에만 신경 쓴다. 그래서 목표 성능에 반드시 도달해야 한다면 코드는 다루기에 더 어렵게 바뀔 수도 있음을 각오해야 한다.
리팩터링 하는 이유
리팩터링이 소프트웨어의 모든 문제점을 해결하는 만병통치약은 절대 아니다. 하지만 코드를 건강한 상태로 유지하는 데 도와주는 약임은 분명하다. 리팩터링은 다양한 용도로 활용할 수 있고, 또 반드시 그래야 하는 도구다.
리팩터링하면 소프트웨어 설계가 좋아진다
아키텍처를 충분히 이해하지 못한 채 단기 목표만을 위해 코드를 수정하다 보면 기반 구조가 무너지기 쉽다. 그러면 코드만 봐서는 설계를 파악하기 어려워진다. 반면 규칙적인 리팩터링은 코드의 구조를 지탱해줄 것이다.
리팩터링하면 소프트웨어를 이해하기 쉬워진다
리팩터링은 코드가 더 잘 읽히게 도와준다. 잘 동작하지만 이상적인 구조는 아닌 코드가 있다면, 잠깐 시간을 내서 리팩터링해보자. 그러면 코드의 목적이 더 잘 드러나게, 다시 말해 내 의도를 더 명확하게 전달하도록 개선할 수 있다.
리팩터링하면 버그를 쉽게 찾을 수 있다
코드를 이해하기 쉽다는 말은 버그를 찾기 쉽다는 말이기도 하다.
리팩터링하면 프로그래밍 속도를 높일 수 있다
리팩터링하면 코드 개발 속도를 높일 수 있다. 내부 설계가 잘 된 소프트웨어는 새로운 긴으을 추가할 지점과 어떻게 고칠지를 쉽게 찾을 수 있다. 모듈화가 잘 되어 있으면 전체코드베이스 중 작은 일부만 이해하면 된다. 코드가 명확하면 버그를 만들 가능성도 줄고, 버그를 만들더라도 디버깅하기가 훨씬 쉽다. 내부 품질이 뛰어난 코드베이스는 새 기능 구축을 돕는 견고한 토대가 된다.
언제 리팩터링해야 할까?
3의 법칙
1. 처음에는 그냥 한다.
2. 비슷한 일을 두 번째로 하게 되면(중복이 생겼다는 사실에 당황스럽겠지만), 일단 계속 진행한다.
3. 비슷한 일을 세 번째 하게 되면 리팩터링한다.
'Programming > JavaScript+CSS' 카테고리의 다른 글
[JavaScript] 인터랙티브 (0) | 2024.11.05 |
---|---|
[JavaScript] 자식 창에서 부모 창 새로고침 (0) | 2024.09.20 |
리팩터링: 첫 번째 예시 (1) | 2024.09.11 |
자바스크립트 map() 함수 (0) | 2024.08.31 |
자바스크립트 concat() 함수 배열 합치기 (0) | 2024.08.29 |