연구개발 이야기
소스코드리뷰(XXXII) 한번의 루프로 최대한 처리하라
금메달.아빠
2011. 5. 21. 01:14
오랜만에 직원의 개발 소스코드를 보았더니, 조언할 일이 생겼다.
여러가지 기존의 소스 코드를 재조합해서 붙여 만들다 보면 너저분한 것은 물론이요, 처리가 뿔뿔이 흩어져 있는 것이 보인다.
세개의 루프가 존재하는데 초기 조건이 다르기 때문에 배열의 첨수(Index)를 나누어야 하는 것이다.
이런 경우 루프를 세번 돌려야 하기 때문에 근소한 차이일 수 있지만 계산 속도가 느려진다. 배열을 이동하는 시간이 들기 때문이다. 그리고 소스 코드를 유지보수하려면 한개의 루프로 고쳐주어야 한다.
"K = 0" 에 관한 부분을 특이점(singular point)으로 취급하여 초기 조건을 처리하도록 한다.
여러가지 기존의 소스 코드를 재조합해서 붙여 만들다 보면 너저분한 것은 물론이요, 처리가 뿔뿔이 흩어져 있는 것이 보인다.
- for K= 0 to N
- '...
- array(K) = some_value(K)*Math.PI
- next
- for K= 1 to N
- '...
- arrayB(K) = some_time(K-1)*array(K)
- next
- for K= 0 to N
- '...
- arrayC(K) = some_value(K)*array(K)
- next
세개의 루프가 존재하는데 초기 조건이 다르기 때문에 배열의 첨수(Index)를 나누어야 하는 것이다.
이런 경우 루프를 세번 돌려야 하기 때문에 근소한 차이일 수 있지만 계산 속도가 느려진다. 배열을 이동하는 시간이 들기 때문이다. 그리고 소스 코드를 유지보수하려면 한개의 루프로 고쳐주어야 한다.
"K = 0" 에 관한 부분을 특이점(singular point)으로 취급하여 초기 조건을 처리하도록 한다.