LISTORY
리팩토링이란 본문
리팩토링이란 무엇인가
리팩토링은 두 가지 의미로 쓰인다.
1. 겉으로 드러나는 기능은 그대로 둔 채, 알아보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업
2. 리팩토링 기법을 연달아 적용하여 겉으로 드러나는 기능은 그대로 둔 채 소프트웨어 구조를 변경한다.
결국 리팩토링이란 SW의 기능에는 영향을 주지 않지만, 내부 코드를 보기 쉽고 수정하기 간편하게 변경하는 작업을 말한다.
SW 작업을 할 시에는 이 리팩토링 작업과 코드 추가 작업, 크게 두개로 분류할 수 있다.
이 두 가지 작업은 병행되지 않고 하나의 작업이 끝났을 때 다른 작업을 수행해야 한다.
즉, 코드 추가 작업이 끝난 다음 리팩토링 작업이 진행되어야 하며, 리팩토링 작업이 끝난 이후에 또 다른 코드 추가 작업이 이루어져야 한다.
리팩토링을 해야 하는 이유?
첫번째 이유는 소프트웨어의 설계가 개선 되기 때문이다.
소프트웨어의 설계가 엉망으로 되어 있다면, 후에 프로그램을 유지 보수, 또는 기능을 추가하는 것이 힘들어 진다.
설계가 잘못되어 코드가 엉망이 되었을 경우에는 프로그램 자체가 무거워지고 느려질 수 있다.
두번째 이유는 소프트웨어를 쉽게 이해할 수 있도록 만들기 위해서이다
여러 명의 사람들과 함께 협업하고 있을 경우, 혹은 프로그램의 유지 보수가 필요한 경우 등, 본인의 코드를 남이 보거나 나중에 자신이 봐야하는 경우는 상당히 많다.
이를 위해서 중요한 것은 하나의 코드가 정확한 목적을 갖고, 나타내야 한다는 것이다.
리팩토링을 하면 낯선 코드도 쉽게 이해할 수 있다.
세번째 이유는 버그를 찾기 쉬워지기 때문이다.
네번째 이유는 프로그래밍 속도가 빨라지기 때문이다.
설계가 깔끔해야 개발 속도가 빨라진다.
버그가 생겼을 경우 시스템을 이해하고 중복 코드를 찾느라 시간이 오래걸리는데, 리팩토링을 잘 수행했을 경우 버그를 찾기 그렇게 어렵지 않다.
이렇듯, 소프트웨어 개발에서 리팩토링은 굉장히 중요하다. 하지만 따로 정기적으로 시간을 내어 리팩토링을 수행할 필요는 없다.
리팩토링은 기능을 추가하거나 버그를 수정할 때, 또는 코드를 검수할 때 틈틈히 해두는 것이 좋다.
리팩토링이 필요한 부분은 크게
코드를 알아보기 힘들 때
중복된 로직이 존재할 때
추가 기능을 넣어야 해서 실행 중인 코드를 변경해야 할 때
조건문 구조가 복잡할 때
등이 있다.
리팩토링과 설계
개인적으로 소프트웨어 프로그래밍에서 가장 중요한 것을 설계라고 생각한다.
하지만 사전 설계를 할 경우, 프로그램의 모든 경우의 수에 대해 완벽히 설계할 수 없다. 항상 빈틈이 있기 마련이다.
그러므로 사전 설계를 할 경우에는 프로그램의 큰 틀만 세우고, 코등을 한 이후에 리팩토링을 하여 솔루션을 구축하는 것이 좋다.
물론 처음부터 수정할 부분에 대해 영향을 받지 않는 설계를 할 수도 있다. 하지만 이렇게 코드를 작성할 경우에는 유지보수 하기 힘든 경우가 많고, 예상하지 못했던 수정사항이 발생할 가능성도 충분히 존재한다.
그러므로 수정이 필요할 지, 그리고 그 수정을 하려면 얼마나 많은 노력이 필요할지를 개발자가 미리 판단하여 적절한 설계 및 리팩토링을 할 필요가 있다.
'IT > 리팩토링' 카테고리의 다른 글
코드 리팩토링 [ 강박적 기본 타입 사용 / switch 문 ] (0) | 2018.04.01 |
---|---|
코드 리팩토링 [ 잘못된 소속 / 데이터 뭉치 ] (0) | 2018.04.01 |
코드 리팩토링 [ 기능의 산재 ] (0) | 2018.04.01 |
코드 리팩토링 [과다한 매개변수 / 수정의 산발] (0) | 2018.03.24 |
코드 리팩토링 [중복코드 / 장황한 메서드 / 방대한 클래스] (0) | 2018.03.24 |