책 세 권을 샀다.


패턴을 활용한 리팩터링, 클린 코드, More Effective C++이다. 



일단 C++을 다루는 프로그래머라면 Effective C++ 3판, More Effective C++, 마틴 파울러의 리팩토링 책은 거의 필수로 가지고 있어야 한다고 생각했기 때문에 이걸 사려고 했는데 Effective C++이랑 리팩토링은 현재 품절 상태였다.


품절이 되니까 조금 겁이 나는게, 이러다 절판되서 영영 구할 수 없으면 어쩌나 하는 생각이 들었다. 제발 나와줘 ㅠㅠ



게임 프로그래밍을 하면서 많이 듣는 말이 있는데, 라이브 게임은 소스 코드가 더러울 수 밖에 없다는 말이다. 하지만 난 그 말에 동의하지 않는다. 더러울 수 밖에 없다는 말에는 자포자기와 자기 합리화가 엿보이기 때문이다.


라이브 게임의 코드는 24시간 언제나 변한다. 마감도 항상 빠듯하고, 버그가 발생하면 타격도 크다. 따라서 코드를 수정하는 데 보수적이 되는 경향이 있는 것 같다.



처음엔 클래스가 작았는데, 사소한 기능을 추가하거나 변경하다 보니 새로운 클래스를 만들지 않고 조건문 등을 추가해서 기존의 클래스 내에 기능을 추가하는 경우가 많다. 메소드 하나 짜리 일을 클래스로 빼려면 심리적으로 부담이 되기 마련이다.


하지만 이게 누적이 되다 보니, 클래스가 신적인 존재 - Super Class 또는 God Class - 가 되는 경우가 많다. 물론 코드는 잘 동작한다. 단지 이해하기 힘들고 변경하기 힘들게 될 뿐.



나는 코드가 더러우면 결국엔 프로젝트가 망한다는 믿음을 가지고 있다. 지금 작업 중인 코드를 계속 리팩터링해나가고 있다. 수 년간 쌓여온 코드는 단지 한 가지 기능을 추가하거나 수정할 때 수십개의 파일 또는 클래스를 수정해야 할 정도이다. 


가혹한 환경과 조건에서 프로그래밍을 했던 선임들의 마음은 충분히 이해하지만, 그렇다고 해서 지금 그들의 코드를 그대로 놔두는 것 또한 같은 프로그래머로서의 도리가 아닌 것 같다.



클린 코드(Clean Code) 책 뒤편을 보면 이런 말이 있다.


나쁜 코드도 돌아는 간다. 하지만 코드가 깨끗하지 못하면 개발 조직이 기어간다.


반응형
친구가 짠 프로그램 소스를 우연히 보게 되었다.

C로 작성된 - 확장자는 cpp였으나 - 이 프로그램은 친구가 테스트해보라며 나에게 건네줬던 프로그램의 소스였다. 나는 실무 경험이 몇 년 있었지만 그 친구는 대학원생이었기 때문에 실무와는 좀 거리가 있었다. 그래서인지 소스 코드가  학부생 수준의 스타일로 작성되어 있었다. 보자마자 드는 생각이, 어떻게든 뜯어 고치고 싶은 생각뿐이었다. 

그런데 고치는 일이 그리 만만한 일이 아니었다. 일단 작은 프로그램이긴 했지만 멀티 스레드로 동작하고 있었다. 요즘 공부하는 TDD를 적용한다고 치면 - 이 경우엔 기존 코드에 테스트를 씌우는 작업 -  모든 네이티브 함수들을 클래스화해서 Mock object를 사용하도록 바꿔야 했다. 

아... 그런데 몇 줄 안되는 네이티브 C 코드를 수정하는 것도 결코 만만한 일이 아니었다. 이렇게 고통스러울 수가!

그래서 Working Effectively with Legacy Code를 읽기 시작했다. 실무(?)에 앞서 이론을 좀 다져놔야하지 않겠느냐는 생각이었다. 그런데 책이 또 영어라서 이것도 고통스럽다. 이제는 영어를 공부해야 하나...

 
반응형

'일기' 카테고리의 다른 글

프로그래머와 국회의원의 공통점  (0) 2010.11.02
Test Driven Development, 첫 걸음부터 세미나를 하기까지  (0) 2010.10.10
프로그래밍 심리학  (0) 2010.09.15
ONE MUST FALL 2097  (0) 2010.02.27
으아앙대  (0) 2010.02.26

+ Recent posts