코딩의 기술 - 오즈 모리하루::조건문 감축과 단순화


if  조건문은 하나씩 추가할 때마다 실행 경로가 증가한다. 실행 경로는 일직선으로 구성되는 것이 이상적이다. 따라서 어떻게 해야 if 조건문을 사용하지 않고 코드를 구성할 수 있을지를 생각하는 것이 포인트이다.


if( x > 10 ) x = 10;
--> x = std::min(x, 10);

if( x < 0 ) x = 0;
--> x = std::max( x - 1, 0);

그렇다면...이것은?

영어 안써지지 왜...장난 까나

이프 ( 엑스 > 0 ) {
    엑스 = 10;
} 엘스 이프 ( 엑스 < 0 ) {
   엑스 = 0;
}

--> 에스티디::민(에스티디::맥스(엑스, 0 ), 10 );
어짜피 내가 볼껀데 헤헷...

랩 어라운드의 함수화

 랩 어라운드(wrap around) : 숫자가 상한값에 이르면 하한값으로 돌려주고 다시 계산하는 것.

  int wrap(int x, int low, int high) {
     assert(low < high);
     const int n = (x - low) % (high - low);
     return ( n >= 0 ) ? ( n + low ) : ( n + high );
  }
 
 x = wrap( x, 0, 10 ); // 0~9  내부를 랩 어라운드.

삼항 연산자

return ( time < 0 ) ? 1000: 0; // 값의 경우는 3항 연산자가 좋단다.

댓글

이 블로그의 인기 게시물

실내공간 표준안 IndoorGML의 개념 및 활용(이기준, 이지영)('13.06.24 심사완료) 정리.

플랫폼과 에코시스템