2.3 리팩터링하는 이유
리팩터링은 코드를 건강한 상태로 도와주고, 다양한 용도로 활용할 수 있으며 반드시 그래야하는 도구이다. 다만, 모든 문제점을 해결하는 만병통치약은 절대 아니다.
1️⃣ 리팩터링하면 소프트웨어 설계가 좋아진다.
아키텍처를 충분히 이해하지 못한 채 단기 목표만을 위해 코드를 수정하다 보면 기반 구조가 무너지기 쉽다. 코드만 봐서는 설계를 파악하기 어렵고 코드 구조가 무너지면 약효과가 누적된다. 설계를 파악하기 어려워질 수록 설계를 유지하기 어려워지고, 설계가 부패되는 속도는 속도는 더욱 빨라진다.
🎈 규칙적인 리팩터링은 코드의 구조를 지탱해준다.
중복 코드 제거는 설계 개선 작업의 중요한 한 축이다.
코드량이 많으면?
속도에 영향을 주진 않지만 실수 없이 수정하기 어려워진다.
코드량이 줄면 모든 코드가 언제나 고유한 일을 수행함을 보장할 수 있으며 이는 바람직한 설계의 핵심이다.
2️⃣ 리팩터링하면 소프트웨어를 이해하기 쉬워진다.
내 코드를 다룰 개발자를 배려해야 한다. 리팩터링은 코드가 더 잘 읽히게 도와준다. 코드의 목적이 더 잘드러나게 의도를 더 명확하게 전달하도록 개선하자. 다른 사람이 게으른 나 자신 일 때가 있다. 저자는 작성한 코드를 머리에 담아두지 않고, 코드를 보면 알 수 있는 것들은 의도적으로 기억하지 않는다고 한다.
3️⃣ 리팩터링하면 버그를 쉽게 찾을 수 있다.
코드를 이해하기 쉽다 == 버그를 찾기 쉽다
프로그램의 구조를 명확하게 다듬으면 '이럴 것이다'라고 가정하던 점들이 분명히 드러나게 되며, 버그를 지나칠 수 없을 정도로 명확해진다.
4️⃣ 리팩터링하면 프로그래밍 속도를 높일 수 있다.
🎈 지금까지 제시한 장점을 정리하자면 리팩터링하면 코드 개발 속도를 높일 수 있다.
리팩터링하는데 시간이 드니 전체 개발 속도는 떨어지지 않을까?
한 시스템을 오래 개발 중인 개발자들은 초기에는 진척이 빨랐지만 현재는 새 기능을 하나 추가하는데 훨씬 오래 걸린다고 한다. 기능을 추가하면 버그가 발생하는 일이 잦고, 이를 해결하는 시간은 한층 더 걸린다. 이러한 부담이 기능 추가 속도를 계속 떨어뜨리면서, 처음부터 새로 개발하는 편이 낫다고 생각하게 된다.
소프트웨어 품질에 따라 내부 설계가 잘 된 소프트웨어는 새로운 기능을 추가할 지점과 어떻게 고칠지를 쉽게 찾을 수 있다. 모듈화가 잘 되어 있으면 전체 코드베이스 중 작은 일부만 이해하면 된다. 코드가 명확하면 버그를 만들 가능성도 줄고, 디버깅하기 쉽다.
🎈 설계 지구력 가설
내부 설계에 심혈을 기울이면 소프트웨어의 지구력이 높아져서 빠르게 개발할 수 있는 상태를 더 오래 지속할 수 있다.
리팩터링하면 기존 코드의 설계를 얼마든지 개선할 수 있으므로, 프로그램 요구사항이 바뀌더라도 설계를 지속해서 개선할 수 있다. 처음부터 좋은 설계를 마련하기란 매우 어렵다. 그래서 빠른 개발이란 목표를 위해선 반드시 리팩터링이 필요하다.
Last updated