안녕하세요 IT 콩딱이 입니다.

 

오늘은 제가 요즘 하고있는 작업 코드리펙토링에 관해서 이야기를 나눠볼려고 합니다!

그리고 코드 리펙토링이 왜 필요한지에 대해서도 이야기를 해보고자 이렇게 글을 적어봤습니다.

 

1. 코드 리펙토링을 왜하는 것인가?

물론 처음부터 완벽한 구조를 잡고 확장성과 모든것을 고려하였다면 리펙토링은 필요하지 않은 작업일 수 있습니다.

그러나 사람이 하는 모든작업이 완벽할 수 없기 때문에 하는것이라고 저는 생각합니다.

초창기에 설계를 진행하였고... 그 설계대로 모든것이 진행되었다면 아름답게 끝날 수 있겠지만... 저희는 그러한 아름다운 세상에서 살지 못하고 있는 현실입니다.

 

일정과 일정 일정과 일정으로 인해서 일부 아름답지 못한 코드들이 섞이게 되며, 나중에는 전반적인 흐름은 어느정도 룰을 따라가지만 뭉탱이 코드가 되어버리는 현실을 마주하게 됩니다.

 

위와 같이 뭉탱이 코드들을 마주하는 경우가 아니더라도... 추가적인 기능으로 인해서 기존의 구조가 더 이상 유지하기 힘들다는 판단을 내릴수도 있습니다... 그로 인해 전반적인 리펙토링을 수행하는 것입니다.

 

 

2. 리펙토링을 위해 무엇을 준비하면은 좋은가?

제 개인적인 판단으로는 충분한 테스트 코드입니다. 리펙토링의 목적은 기존의 동작에 영향을 주지 않는다는데 있습니다. 즉 동일한 Input이라면 동일한 output을 반환해야 합니다.

하지만 리펙토링을 하기 시작하면 생각보다 이것저것 쳐내고 합치고 분리하고 다양한 작업들을 수행하게 됩니다.

거기에서 동일한 input과 동일한 output을 그대로 유지하면서 모든것을 컨드롤 하기는 여러므로 힘들수 있습니다.

이럴떄 필요한것이 테스트코드입니다.

 

테스트 코드는 여러분의 리펙토링 작업에서 오는 오류나 버그들을 보다 쉽게 찾아낼수 있게 도와주기 떄문입니다.

 

 

3. 리펙토링은 진짜로 필요한 것인가?

몇몇 사람들은 리펙토링에 대해서 회의적인 입장을 지니고 있습니다.

현재 잘 구동되는 코드를 굳이 왜? 수정해야 하는가... 라는 의문이 꼬리를 물고 늘어나게 됩니다.

 

모든 것을 리펙토링 하는것은 미련한 짓이라고 저는 생각합니다. 하지만 계속 개발중이고 앞으로 추가될 내용이 많다면

너무 미루기보다는 한탬포 쉬어가는 단계처럼, 한 단계 정리가 필요하다는 생각입니다.

여러분이 리펙토링이 필요한지 의문을 지니고 있다면, 현재 코드 구조의 문제점을 이미 알고 있다는것과 비슷하지 않을까요? 

 

 

4. 시간과 노력이 생각보다 많이든다

리펙토링에 대해서 단순히 코드 복사와 병합정도로 생각하시는 사람들도 많습니다.

하지만 생각보다 시간과 노력이 많이 드는 작업입니다.

 

한번 리펙토링할때 구조를 잘 잡아두어야지 2차 3차 리펙토링이 동일한 문제로 인해 발생하지 않습니다.

그렇기 위해서 끈임없이 회의와 현재의 방향성과 미래의 목표에 맞는 절충안을 마련하기 위해 노력합니다.

 

그리고 너무 커다라 부위로 할수 없기때문에 1차, 2차, 3차에 걸쳐서 각각의 작업들을 수행하며 몇개의 셈플코드를 작성하고 회의하고 하는 일련의 과정들을 무수히 거치게 됩니다.

 

시간과 노력이 생각보다 많이든다에서 제가 하고싶은 이야기는 단순이 하루 이틀에 끝낼 수 있다는 자신감으로 리펙토링을 미루지 말았으면 좋겠다는 이야기였습니다.

 

이상 제가 리펙토링에 대해서 생각한 부분을 이야기 해보았습니다. 감사합니다.

 

 

 

 

Posted by 콩딱파파
,