레가시코드 라는게 이책에선 옛날코드(C언어,코볼등..)을 말하는게 아니고 기존에 작성되어 현장에서 잘 돌아가고 있는 하지만 변경이 불가피한 코드를 말한다.
책 10페이지에서는 다음과 같이 레가시코드에 대해 설명하고 있다. 레거시 코드는 다른 사람한테서 가져온 코드다. 우리 회사가 다른 회사로부터 코드를 얻어 왔을 수도 있고 원래 팀에 있던 사람들이 다른 프로젝트로 옮겨가서 코드를 얻어 왔을 수도 있다.
제목에서의 레거시코드라는 단어의 구식이라는 인상때문에 책을 사지 않았지만 중고로 싸게 나와서(ㅈㅅ..) 구매했다.
첫인상과 다르게 저자는 켄트벡의 XP와 xUnit, 마틴파울러의 리펙토링 (관련 기법을 출간한 사람의 저자를 기준으로 말이다... 사실 리펙토링은 마틴 파울러가 유행시켰지만 원소스는 켄트벡이다. 라고 리펙토링 책에서 마틴이형이 고백한바 있다)의 정수를 그대로 습득하여 자기것으로 만들어 본인의 현장경험을 풀어낸 책이었다.
아마 기존의 대가의 궁둥짝에 치어 다른 "레거시코드"라는 새로운 포지션을 잡은듯하다. 예를 들어 또 하나의 리펙토링, 또 하나의 XP 라던가 xUnit + 리펙토링과 XP와의 절묘한 조합. 뭐 이런 식의 타이틀로 책을 출간했다면 아류나 2등의 신세를 면치 못했을 것이다. 잭 트라우트가 말하는 업계 리더의 포지셔닝 개념처럼 말이다.(포지셔닝 69페이지)
이책의 마틴파울러의 리펙토링과 다르게 (리펙토링은 교과서를 보는듯한 잘짜여진 절차와 다소 딱딱한 문체) 현장에서 키보드를 두드리기 직전에 요구되는 기법을 설명하는 듯하다. 다음과 같은 문장이 이를 설명해준다. 편집하고 기도하기와 덮고 수정하기.(37페이지)
객체지향의 원칙과 테스트와 리펙토링을 돌아가고 있는 코드에 적용시키는 상황에 읽어보면 현장감있는 좋은 책이다. 내 현장과 다른게 아쉽지만.. |
레거시 코드의 엄밀한 정의는 다른 사람한테서 가져온 코드다. 하지만 여기에는 더 많은 의미가 있다. 업계에서는 레거시 코드는 이해할 수 없고 변경시키기 힘든 코드를 지칭하는 용어로 종종 사용된다. 이 레거시 코드에는 테스트 코드도 없다. 이 책은 이런 레거시 코드를 이해하고 테스트할 수 있도록 리팩토링 하는 방법을 다루고 있습니다. 이 책 서문에서 나쁜 코드에 대한 정의를 내리고 있는데... 코드가 얼마나 훌룡하게 작성되어 있는지 여부와는 상관없이 테스트 루틴이 없는 코드는 불량코드다. 테스트 루틴이 없으면 우리 코드가 더 나아지는지 더 나빠지는지를 알수 없게 된다.책 전반에 걸쳐서 테스트와 리팩토링을 적절히 버무려서 설명하고 있습니다. 단위테스트, 테스트 하니스, TDD등 테스트에서 한마디로 설명하기 어려운 개념들을 명쾌하게 정의하고 있습니다만 후반부 리팩토링에 대한 설명은 조금 지루하게 느껴질 수 있을거 같습니다. 저는 중간에 론 제프리스가 CRC를 이용해 아키텍처 설명하는 부분에서 '아 이거다.'하는 생각이 들더군요. 일전에 코드리뷰를 CRC를 이용해 진행한 적이 있는데 이런 방식도 참신하게 느껴졌습니다. 이 책은 훌룡한 코드를 만드는 법을 다루는 책이 아닙니다. 그 보다는 입원한 환자의 배를 열고 종양을 도려내는 책이라고 할까요. 종양을 제거했다고 완치가 되는것은 아니죠. 코드리뷰나 인스펙션 등을 이용한 지속적인 치료를 잊지 마세요. ^^ |
이런 개판 번역은 삼각형 이후로 오래간만이다. 에이콘 출판사에 대해서 좋은 평가를 가지고 있었는데, 이 책 때문에 -100 점이다. 원서로 읽었던 내용이 머리 속에서 사라져 버릴 거 같은 느낌이 들 정도다. 나참...
원서를 사거나 빌려 볼 수 있다면 그냥 그걸 보길 바란다.
p.s 역자들 이름도 블랙리스트에 올려놨다. 쩝 ;;; |
몇년전에 "Working Effectively with Legacy Code"를 읽었을때 이런 좋은 책이 번역되어 나나 주위 사람들이 좀더 쉽게 접근할 수 있다면 얼마나 좋을까 하고 생각한 적이 있었다. 그런데 어느날 yes24에 "레거시 코드 활용 전략"이라는 이름으로 출간 예정이 결정된것을 보고 기쁜 마음을 감출 수가 없었다. 이런 책도 이젠 번역되는구나! 한번 더 읽어 볼 요량으로 바로 예약하였다. 배송된 책을 받아보니 표지 디자인도 훌륭하고 폰트나 레이아웃도 보기 쉽게 되어 있었다. 내용은..? 결론부터 말하자면, 무슨 내용인지 이해가 거의 가지 않는다. 내가 난독증일지도 모르겠지만, 번역된 문장을 보고 있으면 어떤 의미로 쓴 글인지 조차 모를때가 많았다. 현재 반도 보지 못하였지만, 개인적으로는 그냥 원서를 보는게 더 정확하고 이해도 빠를것으로 보인다. 한번 번역된 책이 다시 번역되는 경우는 거의 없기에 더 아쉬움이 남는다. 요즘에는 베타 리더나 다른 제도를 통해 출간전에 번역의 미숙함이나 오류를 많이 수정하는 경우가 많은데 출판사나 역자분들의 사정때문인지 모르지만 조금 더 시간과 신경을 쏟지 못한것이 원작(?)을 좋아했던 독자로써 슬플 다름이다. |