본문 바로가기
Programming/Knowledge

리팩토링

by OKOK 2018. 3. 21.

나쁜 디자인의 코드를 좋은 디자인으로 바꾸는 방법


리팩토링이란 무엇인가요

리팩토링은 외부동작을 바꾸지 않으면서 내부 구조를 개선하는 방법으로, 소프트웨어 시스템을 변경하는 프로세스입니다. 


리팩토링시 중요한 점은

소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이며, 겉으로 보이는 소프트웨어의 기능을 변경하지 않는 것입니다. 따라서, 리팩토링을 할 때는 기능을 추가해서는 안되고, 단지 코드의 구조에만 신경 써야 합니다. 프로그램의 가치를 높이는 것입니다.


2. 왜 해야 하는가?

소프트웨어의 디자인을 개선시킵니다. 정기적인 리팩토링은 코드가 디자인을 유지하도록 도와줍니다.

소프트웨어를 더 이해하기 쉽게 만듭니다. 버그를 찾도록 도와줍니다. 


3. 언제 해야 하는가?

리팩토링 자체를 목적으로 삼는 것이 아니라, 어떤 다른 것을 하기 위해 리팩토링을 하는 것이고, 리팩토링은 그 다른 것을 하는데 도움을 줍니다. 스트라이크 3개면 리펙토링을 합니다. 어떤 것을 처음 할 때는 그냥 한다. 두 번째로 비슷 어떤 것을 하게 되면, 그냥 중복되도록 합니다. 세 번째로 비슷한 것을 하게 되면, 그 때 리팩토링을 합니다. 기능을 추가할 때 리팩토링을 합니다. 버그를 수정해야 할 때 리팩토링을 합니다. 코드 검토를 할 때 리팩토링을 합니다.


4. 할 때의 문제점 

비지니스 앱은 데이터베이스 스키마와 밀접하게 결합되어 있습니다. 데이터베이스 스키마와 객체 모델간의 종속을 최소화하기 위해 계층구조로 만들었다 하더라도, 스키마를 변경하려면 데이터를 마이그레이트 해야 합니다.


인터페이스 변경

코드를처음 부터 다시 작성할 때, 마감일에 가까울 때 리팩토링을 하지 말아야 합니다. 


5. 어떤 것을 리팩토링 해야 하는가?

중복된 코드, 긴 메소드, 거대한 클래스, 긴 파라미터 리스트, 화간적 변경, 산탄총 수술, 기능에 대한 욕심, 데이터 덩어리, 스위치 문, 불완전한 라이브러리 클랫래스, 주석 입니다.