대박 실수 – 계약에 의한 프로그래밍의 필요성

메모리를 많이 쓰면 저 세상으로 황급히 가시는 프로그램때문에, 최대한 메모리를 아끼는

(그러기에는 이제는 너무 string 객체에 익숙해져 버렸지만…) 작업을 해야했다.

다행히도, 동시에 그 객체를 건드리는 일이 없었기 때문에, 아이디어가 나온게, 정적으로

한번만 할당하고, 계속 그 메모리를 이용하자였다.

그리고 이 메모리를 끊어서 줘야 하는 경우가 생겼는데, 이를 위해서 간단히 한 바이트를

기억해두고, 0으로 변경 후, 전송하고, 다시 원래대로 돌리는 작업을 하게 되었다. 그런데,

그러니 문제가 생겼다. –_-, 깜빡하고 마지막에 되돌리는 것을 잊은 것이다. –_-

 

중간에는 잘 나오니, 테스트도 쉽게 넘어가 버리고… 마지막에 혼자서 대박 버그를 만들어

버린것이었다.

 

이 때 배운 교훈,

1. 같은 흐름의 동작이라면, 나뉘기 보다는 하나로 구성해라.

뭐, 컴파일 시점에 속도를 조금이라도 더 올리기 위한것이 아니라면, 같은 조건이 들어가야

하는 함수들은 하나로 묶어두는 것이 좋다.(즉, 한군데만 고치고 다른곳에 적용이 안되는

케이스다 T.T, 로직이 다른 형태로라도 여러군데 있으면 안되고, 한군데서 처리해야 한다.)

2. 실수 할 수 있는 부분을 미리 정의하자.

이번 실수는 충분히 예상할 수 있던 부분이었다. 일이 바뻐서, 중간에 까먹기 때문에 생기는

문제라. 미리 완료해야 할 목록으로 만들어 두었다면 충분히 사전에 막을 수 있었다.

TDD를 한다든지나 Code Review를 한다든지, 이번 실수는 Code Review 와 Test 를

했음에도 불구하고, 대충하면 –_- 큰일난다라는 것의 교본이다. T.T

온라인 코드리뷰는 조금 힘든 듯, 작성자로 부터 설명을 듣고, 그 이후에 맞는 지 확인하는

것이 더 좋다라는 T.T