본문 바로가기

카테고리 없음

리팩토링(Refactoring)

반응형

 리팩토링(Refactoring)을 한 문장으로 요약하면 '나쁜 코드를 좋은 코드로 바꾸는 것'이라고 할 수 있습니다. 이를 수행하기 위해서 이미 작성한 소스코드에서 구현된 기능과 로직을 변경하지 않고, 내부 구조를 변경합니다.

 

리팩토링이 필요한 이유

 리팩토링이 필요한 이유는 좋은 코드를 작성했을 때 얻을 수 있는 장점들과 많은 유사성을 가집니다. 리팩토링을 통해 가독성이 좋은 코드가 되고, 소스코드를 더욱 이해하기 쉽게 만들며, 버그를 쉽게 찾을 수 있게 되어주고, 프로그램을 빨리 작성할 수 있도록 도움을 제공합니다.

 

리팩토링이 필요할 때

 나쁜 코드를 좋은 코드로 바꾸기 위한 리팩토링이 필요할 때는 먼저 '유사한 내용이 세 번 이상 반복될 때'가 있습니다. 앞서 작성했던 <개발자가 피해야 할 나쁜 코드 작성>에서 언급한 바와 같이 코드에 반복되는 부분이 많아지면 오류나 버그가 발생할 확률이 높아집니다. 또한 새로운 기능을 추가하거나, 코드 리뷰를 할 때 리팩토링을 진행하는 것이 좋습니다. 그리고 더 이상 쓰기 힘들거나, 오류나 버그가 발생되는 레거시 코드가 존재할 때 리팩토링이 반드시 필요합니다.

 

리팩토링의 방법

 우선 가독성과 재사용성을 향상하기 위해서 함수를 분리하고, 함수명을 짧고 기능을 잘 설명하도록 만드는 것이 중요합니다. 이를 Extract Method 기법이라고 하며, 코드의 재사용성을 높이고, 불필요한 임시 변수를 함수로 바꾸어 코드의 길이도 짧게 구현하는데 도움이 됩니다. 또한 리팩토링을 할 때는 속해 있는 클래스가 아닌 다른 클래스에서 더 많이 사용하는 함수가 있을 때 클래스를 이동시켜 적절한 클래스에서 함수를 사용하도록 합니다. 그리고 함수나 변수, 클래스, 객체 등의 요소 이름들을 다른 사람이 읽어도 쉽게 이해되도록 오해의 소지가 없게 이름을 바꾸는 Rename도 리팩토링의 방법 중 하나입니다.

 같은 결과를 내는 조건문이 많은 경우 하나의 조건식으로 합치고, 중복된 분기문을 클래스로 만들거나 동적으로 자유롭게 바꾸어 혼란을 줄일 수 있고, 프로그램 처리의 흐름을 파악하기 어렵게 하는 제어 플러그를 사용하는 것보다 조건문이 일치할 경우 원하는 값을 반환하는 return을 사용하는 것도 방법이 됩니다.

 

 지금까지 살펴본 바와 같이 '나쁜 코드'로 인해 효율이 낮고, 생산성이 저하된다면 리팩토링을 활용하여 좋은 코드(클린 코드)로 변경하여 팀원들과의 원활한 협업을 진행하게 되고, 개인적 성장을 이루는 부분에 있어서도 도움이 될 것입니다.

반응형