소스코드리뷰(XXXII) 한번의 루프로 최대한 처리하라

[목차(도우미)]
오랜만에 직원의 개발 소스코드를 보았더니, 조언할 일이 생겼다.
여러가지 기존의 소스 코드를 재조합해서 붙여 만들다 보면 너저분한 것은 물론이요, 처리가 뿔뿔이 흩어져 있는 것이 보인다.

  1. for K= 0 to N
  2.  '...
  3.  array(K) = some_value(K)*Math.PI
  4. next
  5. for K= 1 to N
  6.  '...
  7.  arrayB(K) = some_time(K-1)*array(K)
  8. next
  9. for K= 0 to N
  10.  '...
  11.  arrayC(K) = some_value(K)*array(K)
  12. next

세개의 루프가 존재하는데 초기 조건이 다르기 때문에 배열의 첨수(Index)를 나누어야 하는 것이다.
이런 경우 루프를 세번 돌려야 하기 때문에 근소한 차이일 수 있지만 계산 속도가 느려진다. 배열을 이동하는 시간이 들기 때문이다. 그리고 소스 코드를 유지보수하려면 한개의 루프로 고쳐주어야 한다.

"K = 0" 에 관한 부분을 특이점(singular point)으로 취급하여 초기 조건을 처리하도록 한다.
by 금메달.아빠 on 2011. 5. 21. 01:14