본문 바로가기
테크

IT 용어 설명) 리팩토링이란?

by 힛스토리 2023. 7. 18.
728x90
반응형

리팩토링이란? 

리팩토링은 소프트웨어 거동을 변경하지 않고 내부 구조를 구성하는 것입니다. 거동에 문제가 없어도, 내부의 코드가 최적의 상태는 아닙니다. 쓸데없는 코드가 많아 알기 어려운 구조로 되어 있는 일이 있습니다. 

 

리팩토링에서는 이러한 코드를 정리하여 정교한 상태로 바꿉니다. 덧붙여 기능 추가나 버그의 수정은 리팩토링이 아닙니다. 리팩토링은 외부에서 볼 때 소프트웨어의 거동을 바꾸지 않는 범위에서의 변경이기 때문입니다.

리팩토링
리팩토링

리팩토링의 목적은?

소프트웨어의 열화를 방지하기 위해 리팩터링 되지 않은 소프트웨어는 빨리 저하됩니다. 이 경우 소프트웨어의 열화는 코드가 복잡해지는 것입니다. 

 

정교하지 않은 코드에는 중복 부분이 많이 존재하고 버그가 발생하기 쉬운 상태입니다. 또한 리팩터링 되지 않은 소프트웨어는 버그 수정이 어려워집니다. 

 

프로그램의 전체상을 파악하는 것이 어렵고 어디에 손을 붙일 수 있는지 알기 어렵기 때문입니다. 따라서 복잡한 코드는 이중 의미로 버그의 위험이 높습니다. 위험을 줄이는 것이 리팩토링의 목적 중 하나입니다. 

 

코드를 쉽게 이해할 수 있도록 우선 움직이면 좋다는 생각에 근거해 작성한 코드는, 나중에 보았을 때 알기 어렵습니다. 다른 사람이 쓴 것을 이해하기 어려운 것은 물론 자신이 쓴 것도 모르는 경우가 있습니다. 

 

이렇게 하면 기능을 추가하거나 업무를 인수하는 데도 어려움을 겪습니다. 리팩터링 하면 이해하기 쉬운 코드가 되어 자신이나 다른 프로그래머의 고생을 줄일 수 있습니다. 게다가 리팩토링 과정에서 이해를 깊게 할 수 있는 것도 장점입니다.

 

리팩토링은 소프트웨어의 거동을 바꾸지 않는 범위에서의 변경입니다. 그 때문에 개발에 있어서 불필요한 수고로 느끼는 사람도 많을 것입니다. 그러나 리팩토링은 결과적으로 개발 속도를 향상합니다. 

 

코드의 이해가 용이해져 수정이나 기능 추가가 원활화하기 위해서입니다. 익숙한 예에 비유하면 책상 위가 흩어진 채로 작업하는 것보다 정리하고 나서 작업하는 쪽이 뿌리는 것과 같습니다. 

 

특히 많은 사람이 관련된 소프트웨어 개발에서는 코드가 정리되어 있다는 장점은 모릅니다.

리팩토링의 방법·수법 

리팩토링을 통해 읽기 쉬운 코드를 구현하려면 다음 작업을 수행합니다. 일관된 처리를 메소드로 중복 부분을 줄입니다. 코드는 중복 부분이 많으면 읽기 어려워집니다. 

 

또한 로직 변경 시에는 중복 부분이 모두 대상이 되므로 부담이 커집니다. 분기 조건이 추가되면 각 케이스에 중복 부분이 있으면 더 중복 부분이 늘어납니다. 

 

중첩을 얕게 한다 중첩이 깊으면 조건을 알 수 없으며 테스트 중에 누출이 발생할 수 있습니다. 조건의 순서를 바꾸는 일부를 메소드로 추출하는 등을 하여 중첩을 얕게 합시다. 

 

변수와 함수의 이름을 단순화 명칭이 내용을 간결하게 표현할 수 있으면 이해가 원활화됩니다. 타인에게 오해되는 명칭은 피합시다. 

 

또한 이러한 작업을 원활하게 하려면 도구를 사용할 수 있습니다. 리팩토링을 지원하는 기능을 갖춘 개발 도구를 사용하면 리팩토링의 번거로움과 인위적 실수를 줄일 수 있습니다.

리팩토링의 주의점

작업을 수행하는 타이밍 결정 

 

기능 추가 및 버그 수정 전 

리팩토링의 목적 중 하나는 기능 추가 및 버그 수정의 원활화입니다. 따라서 이러한 작업을 수행하기 전에 실시하면 효과를 실감할 수 있을 것입니다. 

 

개선의 여지를 발견했을 때 

중첩이 복잡해지고, 중복 부분이 많은 등, 알기 힘들다고 느낄 때 실행합니다. 또한 복잡한 조건 판정이 있는 경우에도 개선의 여지가 있다고 판단할 수 있습니다. 

 

작업을 줄이고 여러 번 테스트 

리팩토링은 전후에 소프트웨어의 거동이 바뀌어서는 안 됩니다. 그러므로 리팩토링 후에는 반드시 테스트해야 하며, 거동이 변하지 않았는지 확인해야 합니다. 

 

따라서 리팩토링 작업을 세분화하여 수행하는 것이 좋습니다. 광범위한 코드를 한숨에 리팩터링 하고 테스트에 패스할 수 없게 되면 어디에 문제가 발생했는지 알기 힘들기 때문입니다. 

 

자주 백업하기 

리팩토링 작업 중에는 자주 백업하십시오. 테스트도 자세하게 실시하지만 문제 발생 시의 손 반환 공수를 최대한 줄이기 위해서는 맞추어 백업도 취해야 합니다. 

 

그러나 백업을 자주 수행하면 버전 관리가 어려워집니다. 파일 버전 관리 도구 등을 활용하는 것이 좋습니다.

리팩토링을 실시해, 소프트웨어 개발의 질을 높이자!

- 소프트웨어의 열화를 방지

- 코드를 쉽게 이해할 수 있도록

- 개발 속도 향상 리팩토링 시에는 다음 사항에 주의합시다

- 작업을 실시하는 타이밍을 결정한다

- 작업을 세세하게 나누어 테스트를 실시한다

 

TDD(테스트 구동 개발)이란?

 

반응형

댓글