코딩의 기술 - 오즈 모리하루::조건문 감축과 단순화
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 내부를 랩 어라운드.
댓글
댓글 쓰기