프로그래밍/Refactoring

Refactoring 1. 리팩토링의 시작

seungdols 2015. 10. 20. 14:16


긁어 부스럼 만들지 말라

(돌아가기만 한다면 코드에 손대지 말라)

- 전통적인 공학 격언


리팩토링이란?


겉으로는 드러나지 않지만, 코드의 기능은 바꾸지 않으면서

내부 구조를 개선하는 작업을 말한다.


리팩토링을 한다는 것은 코드를 작성하고 난 후 설계를 향상시키는 일로 볼 수 있다. 


리팩토링은 기존의 소스코드를 가독성, 재활용, 체계적 구조 측면에서 개선하는 총괄 작업을 뜻한다 - 번역자





만약 프로그램에 기능을 추가해야 하는데, 코드 구조가 조잡하거나, 복잡해서 기능을 추가하기가 어렵다면


먼저 리팩토링을 실시해서 기능을 추가 할 수 있는 환경을 만들어야 한다.


또한, 리팩토링을 실시하고, 테스트 케이스를 진행해야 한다. 


리팩토링 - 컴파일 - 테스트 - 반영의 순서로 지켜져야 한다.


* 리팩토링은 프로그램을 단계적으로 수정하기에 버그를 찾기가 쉽다. 


- 컴퓨터가 인식 가능한 코드는 바보라도 짤 수 있지만, 인간이 이해 할 수 있는 코드는 

실력있는 프로그래머만 작성 할 수 있다.


임시변수를 최소화하자!



리팩토링의 뜻은 두가지가 존재한다. 


1. 겉으로 드러나는 기능은 그대로 두고, 알아보기 쉽고 수정하기 편하게 소프트웨어 내부를 수정하는 작업

2. 리팩토링 기법을 연달아 적용해서 겉으로 드러나는 기능은 그대로 두고, 소프트웨어 구조를 변경하는 작업


목적


1. 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것


2. 겉으로 드러나는 소프트웨어 기능에 영향을 주지 않는다.


그럼 왜 리팩토링을 해야 하나 ??


소프트웨어 설계가 개선이 되는 장점이 있다. 

코드의 처음 설계 구조를 유지하려면 지속적인 리팩토링이 필요로하다. 특히나, 처음과는 다르게 점점 더 중복된 코드의 증가, 쓸데 없는 코드의 등장등으로 코드가 지저분 해지는 모습을 많이 볼 수 있는데, 이러한 점을 제거 하며 

초기의 설계대로 프로그램의 설계를 유지 할 수 있다.


리팩토링을 실시하면서 좋은 점은 낯선 코드를 쉽게 이해할 수 있다. 

리팩토링을 하려면 기존의 코드가 어떤 기능을 하는지에 대해 알아야 리팩토링을 적용할 수 있다. 

그런데, 조금씩 점진적으로 확장하는 스타일의 리팩토링이 코드를 잘게 잘게 분해해 '기능단위로' 코드를 분석 할 수 있다.


코드를 파악하게 되면  버그를 찾는 것도 쉬워진다. 그럼 수정 또한 빠르게 할 수 있으며, 소프트웨어 개발의 생산성이 증대 되는 장점을 가진다. 


어떤 시기에 필요한가?


- 같은 작업을 3 번이상 할 때 


- 기능을 추가 할 때


- 버그를 수정 할 때


- 코드를 검수 할 때


위와 같은 상황이라면 빠른 템포로 리팩토링을 실시하자.


프로그램은 4가지 상황에서 수정하기 힘들다. 


1. 코드를 알아보기 힘들 때

2. 중복된 로직이 있을 때

3. 추가 기능을 넣어서 실행 중인 코드를 변경해야 할 때

4. 조건문 구조가 복잡할 때


그렇기때문에 리팩토링을 실시하여, 코드의 가독성을 증진시키고, 중복 제거하여 코드를 깔끔하게 유지해야한다. 


* 리팩토링을 하면 안되는 상황은 ?

= 대표적 코드를 처음부터 새로 작성해야 할 때가 바로 그 시기이다.





  •  무단 수정 및 배포는 금지합니다. 
  •  모든 내용은 본 블로그 운영자가 정리한 내용입니다. 
  •  참조한 정보에 대해서는 출처를 남기고 있습니다.
  •  틀린 내용 / 오류가 포함된 내용은 댓글로 남겨주세요.
  •  choiseungho0822@gmail.com 보내주셔도 됩니다.
  •  Seungdols Wiki 운영중입니다.


반응형