BooK Plus2008.01.10 13:15
출처 : 리팩토링 ( 저자 : 마틴 파울러  / 윤성준 . 조재박 옮김)


---------------------------------------------------------------------------------------------------
사람들은 모두 나름대로의 생각을 갖고 있기 대문에 먼가에 대해 정의하는 것은 항상 조심스럽지만, 어째든 책을 쓸 떄에는 자신의 정의를 선택해야 한다. 여기서 나의 정의는 Ralph Johnos 그룹과 선별된 동료들의 작업에
기초를 두고 있다.

먼저 말해두어야 할것은 '리펙토링' 이라는 단어가 문맥에 따라 두 가지 다른 정의를 가질 수 있다는 것이다. 이것은 짜증나는 일이겠지만, 자연어를 이용하는 실세계에서는 흔한일이다 .

첫 번째 정의는 명사형이다.

***************************************************************************************************
* 리팩토링(Refactoring)(명사) - 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할수 있도록      *
* 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것.                                                                   *
***************************************************************************************************

 두 번째는 동사형이다.
***************************************************************************************************
* 리팩토링 하다(Refactor)(동사) - 일련의 리팩토링을 적용하여 겉으로 보이는 동장의 변화없이 소프트웨어의*
* 구조를 바꾸다                                                                                                                              *
***************************************************************************************************


따라서 리팩토링을 하느라 한 두시간을 보내면서, 그 동안 수십개의 리팩토링을 적용할 수 있다.
나는  "리팩토링이 단순히 코드를 깜끔하게 하는 것이냐?"는 질문을 받은 적이 있다. 어떻게 보면 맞을 수도
있으나 리팩토링은 코드를 깔끔하게 하기 위한 보다 효율적이고 통제된 방법으로 제공하므로 그 이상이라 생각
한다. 나는 리팩토링을 사용한 후로, 전보다 코드를 훨씬 효과적으로 정리한다는 것을 알게되었다.
이는 내가 어떻ㄴ 리팩토링을 사용해야 할지 알고, 버그를 최소화하기 위해 어떤 방법으로 사용해야 하는지를 알고, 또 가능할 때마다 테스트를 하기 때문이다.
위의 정의에서 강조해야 할 것이 몇가지 있다. 첫째 리팩토링의 목적은 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다. 걷으로 보이는 동작을 거의 또는 전혀 변경하지 않고도 , 소프트웨어에서 많은 것을 고칠수 있다. 단지 소프트웨어를 더 쉽게 이해할수 있다록 바꾸는 것이 리팩토링이다. 이것과 대조되는 좋은 퍼포먼스 최적화이다. 리팩토링과 마찬가지로 퍼포먼스 최적화도 보통 동작을 바꾸지는 않는다(속도는 뺴고). 단지 내부 구조를 바꿀 뿐이다. 그러나 그 목적이 다르다. 퍼포먼스 최적화는 종종 코드를 이해하기 더 어려게 만들지만, 필요한 퍼포먼스를 얻기 위해서는 그렇게 해야 한다.

 두 번째 강조하고 싶은 것은, 리팩토링은 겉으로 보이는 소프트웨어의 기능을 변경하지 않는다는 것이다. 리팩토링 후에도 소프트 웨어는 여전희 동일한 기능만을 가지고 있다. 어느 사용자도, 그것이 최종 사용자가 됐든 다른 프로그래머가 됐든 바뀐 것에 대해 알수 없다.

---------------------------------------------------------------------------------------------------

처음의 결심과 다르게 두번째 글을 적는데 몇일이 걸린것 같다. 이렇게 하여 뜻하는 바를 이룰 수 있을지.. 리팩토링을 하면 당장 눈에 보이는 어떠한 변화는 볼수가 없는것 같다. 어차피 돌아가기만 하면 되는데.. 구지 그렇게 바꿔야 하냐고 하는 개발자들이 눈에 밟힌다.
 그렇다고 내가 리팩토링에 눈이 띄어 천부적인 소질을 보이는것도 아니다. 난 단지 이제 막 첫발을 내딧고 있는 개발자다.
언제나 무언가를 처음하기에는 많은것이 요구 되는것 같다.
처음부터 잘하는 사람도 있겠지만.. 그런 사람보단 어리버리 하는 나같은 사람들이 많을것이라고 생각한다.
꾸준히 꾸준히 ... 하다 보면... 언젠가는 향기로운 냄새가 풍기는 코드를 짤 수  있겠지?



 
Posted by is윤군