2004년 7월 9일 금요일

[tech]광란의 소스 코드들

팀사람들의 광란의 코드에 놀라고 있다.
경력 5~7년의 아저씨들이 짜둔 코드인데,
경력 1.5년 된 내가 봐도 참.. 웃기는 것들이 있다.


1. cvs에 data 넣어두고 프로그램 실행할 때마다 꺼내서 쓰기.
scripts에 "cvs up"이라는 명령이 있어서 신기하다고 생각했는 데,
cvs를 마치 storage처럼 쓰고 있다. html을 parsing하는 일종의 template 규칙인데
관리자가 cvs에 update하고 프로그램은 run time에 cvs에서 그것을 내려받는 식..
scp, download, network socket 같은 걸로 해결할 수도 있을 텐데.
귀찮기도 하고 변화를 기록하기 쉽게 하려고 cvs를 썼다나;;
cvs는 source 관리 툴이지, data 관리, logging 툴이 아니다.
SE 측면에서 아주 어쩌구니 없는 소스..
몇 가지 문제를 들자면 development용인 cvs를 release code에 쓰게되면
development와 release process를 분리할 수가 없다.
test중인 data가 바로 service 중인 process에 흘러들어갈 통로가 됨.
그리고 cvs repository server가 service server의 일부가 되는 어처구니 없는 상황이 발생.
(마치 현대 자동차 공장이 쉬는 날에는 소나타에 시동이 안 걸리는 것과 같다.)


 


2. scripts가 scripts를 만들고 실행.
무슨 코메디 같은 코드인지 모르겠다.
sub routine call로 충분히 할 수 있는 일을 이렇게 복잡하게 만들어 놨다.
신기한 코드임에는 사실이지만 지나치게 복잡하고 메타적으로 만들었다.
소스코드가 소스 코드 자신을 스스로 modify하고 실행하다니.
신기해보이지만 goto 문보다 훨씬 악독한 코드이다.
run time에 code가 generate되기 때문에 trace도 힘들고 debugging도 어렵다.
그리고 이론적으로 소스 코드가 스스로를 modify하는 코드는 스스로를 modify하지 않는 코드로
변환할 수 있다. 굳이 이런 미친 방법을 쓰지 않아도 된다는 말씀.
(폰 노이만 아저씨가 증명했던가? ;;a 아무튼 증명된지 50년 넘었음.)
좋게 sub routine를 써줬으면 좋겠다.
분석해보니 그리 대단한 일을 하는 코드도 아닌데.
심심했나보다. (그 분 스트레스가 심했던 듯..)


 


--
누구는 멍청해서 저런 창의적인 방법을 생각하지 않는 게 아니다.
저런 식으로 야매적으로 짜면 나중에 누구도 감당할 수 없기 때문에 안하는 거다.
경력이 몇 년인데, 저런 유치한 코드를 만드는 걸까.. 그것도 상업적이고 팀이 공유하는 코드에..
남들이 보면 해킹 당해서 해커가 장난 쳐놓은 줄 알겠다.
그리고 저런 짓들은 보안 홀도 많기 때문에 뚫기도 쉽다.
미술관에 걸어놓을 만한 코드기는 하지만 남들과 함께 쓰는 코드에는 안 들어가야한다.

댓글 없음:

댓글 쓰기