리팩토링 Refactoring - 코드 품질을 개선하는 객체지향 사고법
Martin Fowler 지음, 김지원 옮김 / 한빛미디어 / 2012년 11월
평점 :
구판절판


나는 일종의 세미 결벽증 같은 것이 있다. 사실 어찌보면 상식적으로 당연하긴 하지만 세균이 매우 많다고 밝혀진 키보드, 마우스 등을 자주 닦거나 손을 자주 씻는다.

돈을 가지런히 모두 앞을 보고 지갑에 넣고 만원/5천원,1천원 짜리로 구분해서 지갑에 분리한다. (돈에도 굉장히 세균이 많고, 영수증에는 폴리페놀A라는 환경호르몬이 있어서 만지기를 꺼려한다.-ㅅ-)


 또, 책을 정리할 때는 분야별로 책꽂이에 꽂는다. 시리즈면 시리즈별로 왼쪽부터 순서대로 놓아야 한다. 또한 책 크기도 어느 정도 고려하여 계단식 모양이 되도록 작은 책에서 큰 순서로 꽂는다. 이렇게 놓으면 정돈되어 보기 좋을 뿐 아니라 나중에 책을 찾기도 편하다.

인터넷 브라우저의 즐겨찾기도 종종 정리한다. 안 쓰는 사이트는 없애고, 분야별로 폴더를 만들고 하위 폴더를 만들어서 분류한다. 만약 하나의 폴더에 하나의 사이트밖에 남지 않게 되면 폴더를 지우고 다른 유사 폴더에 넣어버린다. 그렇게 정리하면 나중에 한결 깔끔하게 찾을 수 있다.


갑자기 왜 이런 이야기를 하냐고?

리팩토링은 일종의 책장정리나 즐겨찾기 폴더 정리와 비슷한 것이다. 인터넷을 이용하다 어느덧 대충 추가하고 또 추가하다 보니 이것저것 뒤섞여져서 나중에 제대로 찾을 수도 없거나 폴더명과 관련없는 사이트가 뒤섞여져 있을 때 한 번 정리한다. 이와 유사하게 클래스 내의 메소드를 분리하거나 더 적절한 곳으로 이동시키고, 메서드 명을 보다 명확하게 만드는 식의 정리 말이다.

단, 기능 상의 변화는 전혀 없이, 코드상태만 개선해야 한다.


재밌는 부분이 있다.

Comment(주석)에 대한 부분이다. 


"주석을 거론하는 이유는 주석이 구린내를 감춰주는 탈취제 용도로 쓰일 떄가 많기 때문이다. 엄청난 양의 주석이 달린 코드를 보면 그 주석들이 해당 코드의 구린내를 가리기 위해 존재하는 경우가 상당히 많다."


프로그래밍을 하다보면 이것저것 덧붙이다 보니 복잡해져서 결국엔 '에라 모르겠다 주석에 설명 달아 놓으면 다른 사람들이 알아 먹겠지'하고 때워버리고 도망가는 경우가 많다. 바람직한 코딩은 주석들이 불필요하게 여겨질 정도로 만들어야 한다는 것이다. 바로 'Extract Method'나 'Rename Method' 등으로 말이다.


저자는 깔끔한 설계야 말로 소프트웨어 개발 속도를 높이는 핵심이라고 한다기계 뒤를 뜯어보고는 이것저것 전선이 뒤덮인 복잡한 꼴에서 수리 하자니 짜증이 이만 저만 아닐 뿐 아니라, 선을 따라가며 파악하는 대도 한참 걸린다. 플라스틱 타이로 관련된 선끼리 묶어놓거나 색상을 통일 시켜 놓았더라면 한결 편리했을 것이다.


리팩토링은 이런 속 안을 잘 정리함으로써 자신과 팀원의 효율성을 증대시키는 역할을 한다. 리팩토링 기법을 모른다고 해서 프로그램을 못 만드는 것은 아닐 것이다. 하지만 좋은 프로그래머와 그렇지 않은 프로그래머. 효율적인 프로그래머와 비효율적인 프로그래머를 나누는 기준 중 하나는 될 것이다. 전자가 되고 싶다면 이 마틴 파울러의 책을 봐야 한다.



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo