본문 바로가기

카테고리 없음

컴퓨터책을 읽어보자1 - 리팩터링 2판 (1)

동기

이번에 동아리 단톡방에 선배님께서 책을 한권 소개시켜주셨다. 책 이름은 '리팩터링 2판'. 소개글을 보니 상당히 괜찮아보여서 사수님께 말씀드렸다. '사수님! 이번에 '리팩터링 2판'이 나온대요! 자바스크립트로 예시코드가 쓰여져 있대요.' 사수님은 한없이 멍청하게 웃는 날처다보시곤 말씀하셨다. '살까요? 필요하면 사죠.' 그리고는 바로 구매하셨다.

 

내가 너무 찐따라 그런가 굉장히 당황했지만 그래도 책을 얻었다. (물론 회사책이다) 쨌든 이번에 좋은 기회가 되서 긴 글을 읽게 되었으니 천천히 읽으면서 이 시리즈를 이어나가고자 한다. 절대 금요일에 무심코 올린 뭉텅이 코드 커밋이 빌드가 안되서 메인스트림에서 난리를 치는 바람에 작업이 전부 날아가서 꿀꿀한 기분에 책을 다 읽지도 않고 글을 쓰는게 아니다.

 

1장

1장에서는 한 연극 예매 프로그램으로 실제 리펙토링 예시를 보여준다. '함수 추출하기'나 '타입코드를 서브클래스로 바꾸기' 등 추후 책에서 소개할 리펙토링 기법 몇몇을 하나하나 예시로 보여준다. 굉장히 세세해서 그냥 천천히 따라가면 비전공자도 쉽게 읽을 정도로 자세히 설명되어 있다.

 

 내가 굉장히 인상 깊었던 것은 리펙토링이 내가 하던 것처럼 뭉덩이로 되지 않는다는 사실이었다. 저자는 함수명을 바꾸고, 매개 변수를 다른 형식으로 바꾸고, 그것을 적용하는 것까지 모두 다른 커밋으로 나타낸다. 각 수정은 '컴파일-테스트-커밋' 단계를 거치게 되는데, 그 주기가 굉장히 짧았다. 정말 나와 정 반대였기 때문에 신선한 충격이었다.

 

 나는 나름 기능을 쪼개서 리펙토링한다고 생각하고 있었다. 최대한 처음에 기능을 열심히 생각해서 나눠 놓고 그것을 리팩토링할 때 마다 지켜가도록 노력했다. 하지만 그것도 기능 단위로 자르다보니 어찌되었건 위의 커밋 단위보다는 굉장히 큰 단위의 수정이 이루어 졌었다. 따라서 수정사항은 불명확하고, 이 기능이 나아진 것은 알겠는데 왜 그런지는 잘 모르겠으며, 이것저것 고치다보니 응집력도 떨어지고 의존성도 늘어나는 참사가 많이 일어났다.

  이에 반해 저자의 경우, 기능 단위가 아닌 수정단위 커밋이 이루어 졌다. 그 결과 수정사항은 더 명확해 졌고, 커밋간 구분은 더 쉬워졌으며, 좀더 응집도 있는 코드, 구조가 탄생했다. 남의 코드를 읽는게 힘들다고 하는데, 그럼에도 불구하고 소설책 읽듯이 하나하나 나아지는 코드를 보면서 굉장히 즐거웠다. 나도 이렇게 해야겠다는 생각이 강하게 들었다.

 

 

 1장을 다 읽고나니 없던 열의가 생겼다. 좀더 열심히 읽으면서 여기에 나온 내용을 체화할 수 있다면 정말 좋은 습관을 가진 프로그래머가 될 수 있겠다는 확신이 들었다. 그래서 단숨에 2장을 읽으려 했으나... 언제나 그렇듯 나는 유튜브를 사랑하는 사람이라서 잠깐만이 몇시간이 되어 이미 한밤중이 되었다. 고로 다음 편은 조금 오래 읽고 글을 쓸 생각이다. 아마 토요일 아침이나 금요일 밤쯤에 올릴 것 같다.