본문 바로가기

Book review

처음부터 아예 코드 리팩토링이 필요없게 만들어보자 [읽기 쉬운 코드를 만드는 기술 - 한빛미디어]


  읽기 좋은 코드란 무엇일까요? 우리는 리팩토링이라는 개념을 알고 있습니다.  바로 읽기 좋은 코드를 만드는 과정이죠. 개발자를 위한 읽기 좋은 코드를 만드는 작업이며, 코드 퍼포먼스를 높이는 작업이지요. 하지만 처음부터 리팩토링 된 것 같은 품질의 코드를 만들 수 있다면 어떨까요? 이 책은 그 이야기를 하고 있습니다. 


  역자 임백준씨는 얘기합니다. 이 책의 내용이 본인의 리팩토링 패턴과 거의 일치한다고... 네 사실은 저랑도 일치하는 견해가 꽤 많습니다. 완벽히 일치하는 부분도 있구요, 제가 노력하는 부분도 있습니다. 새롭게 이야기하는 부분도 있어서 검토해보면 의외로 저자의 의견이 깔끔해서 그대로 따르기만 한다면 좋은 결과를 볼 수 있을 것 같은 부분도 있습니다. 하지만 신경써야 할 부분이 너무 많은게 문제라면 문제입니다. 특히나 명명부분부터 매우 신경쓰이지 않을 수 없죠 :) 

 의식하고 있지만 실제로 잘 안되는 것도 많습니다. 요는 알기만해서는 안된다는 점입니다. 많이 써서 습관화하지 못하면 좋은 내용이라 할 지라도 내 코드를 변화 시킬 순 없을 겁니다. 이제 내용 중 몇가지 포인트만 짚어보면서 이야기해 보겠습니다.


<출처 : Yes24>


  이 책에서 가장 인상적인 부분은 명명법에 대해서 꽤 많은 페이지를 할당 한다는 것입니다. 그만큼 많은 부분이 중요하기 때문인데 그중에서 35페이지의 루프 변수에 대한 제안은 제안 자체로써 매우 좋다는 생각이 들었습니다. 루프 변수 같은 것은 흔히 i,j,k 혹은 x,y,z로 처리해 버리는 경우가 다반사 이기 때문입니다. 다른 부분의 명명법은 신경쓰면서 루프 변수는 대강 넘어간다는 부분이 늘 걸려왔었습니다. 그런데 이책에서는 멤버 변수 혹은 객체명의 앞글자를 따서 만든다고 합니다. 하지만 책에서 설명하는 그런 용도로 사용되지 않는 경우가 있을 수도 있는데 여기서는 설명하는 대로만 사용하기에는 오히려 혼란을 가중시키는 경우가 생길 수도 있다고 생각이 듭니다. 제 선배 중 한분은 LoopI, LoopJ 이런식으로 쓰시더군요. 저도 이런식의 명명법도 괜찮다고 생각합니다. 단순 반복문의 카운트에 사용되거나 하는 경우 그저 i,j를 사용하는 것보다 눈에도 잘 띄고 목적이 뻔히 눈에 보이는 명명법이란 생각이 들어서 입니다. 


  또한 바로 뒤에 미학에 대한 부분은 대공감 할 수 밖에 없었습니다.

보기좋게 정리되면 버그를 찾기도.쉽고 가독성도 높아진다는 이야기가 핵심이죠. 사실 이건 진리나 다름 없습니다. 대부분의 리팩토링에도 위의 목적을 포함하고 있기 때문에 논조에서 부드럽게 이어지는 부분입니다. 흠 잡을 곳 없이 이 책에서 제일 맘에 드는 부분이 아닐까 싶습니다.


  11장 한 번에 하나씩 부분을 보면 함수복잡도에 대한 이야기가 나옵니다. 저는 함수복잡도를 낮추려고 한개의 함수에 한가지 일만을 부여하는 경우가 많습니다. 다만 이러면 문제점이 하나 생기는 데 꼭 그 함수내에서 다양한 일을 처리해야 할 필요가 있을 때가 생기는 경우가 있습니다.(비지니스 플로우 때문에 결합성을 버리기 어려운 문제가 생기는 경우) 그에 따른 다수의 서브 함수를 연속해서 호출하게 되는데 이경우 리턴값에 한번 문제가 생기면 그 다수의 함수를 다 살펴야되는 귀찮은 일이 발생하게됩니다. 물론 모든 경우가 그런것은 아니지만 말이죠. 여튼 다수의 서브 함수 때문에 소스의 이곳 저곳을 계속 돌아다니면서 읽어나가야 한다는 점은 여간 귀찮지 아니할 수 없죠. 그래서 저자는 다수의 서브 함수 보다는 하나의 함수에서 한번에 한가지 씩만의 처리를 하고 마지막 리턴 부분에서 해당 결과에 따른 결과를 내자고 합니다. 생각해보면 타당하고 좋은 방법이라 생각이 듭니다. 이제는 서브 함수 그만 만들고 이런 방법으로 좀 고쳐봐야겠습니다.


  그 외에도 이 책에는 좋은 내용은 많습니다. 주석에 대한 내용이라던가 말이죠. 몇가지 언어를 혼용하면서 사용하기 때문에 자기가 모르는 코드 부분에서는 조금 움찔하는 경우가 있지만, 대체로 읽는데도 문제가 없습니다. 제가 델파이를 주로 사용하기 때문인지는 몰라도 아예 특정 언어에서는 해당되지 않는 내용도 있을 수 있더군요. 완전히 관련 없는 것 까지는 아니지만 말입니다. 

 기존에 나왔던 리팩토링 서적에 비해서는 가볍고 읽기에 수월한 책입니다. 다만 앞서 말하였듯이 이 책을 읽는 것 만으로 코드품질이 좋아질거란 착각은 마십시오. 꾸준히 많은 사용을 해보면서 자신에게 혹은 팀에게 적합한 방식으로 풀어가야 함을 잊지는 마시기 바랍니다.