■深いネストは理解しにくい
int deep_nest( uint8_t input){
int ret ;
if( 50 <= input ){
if( 200 > input ){
ret = 1;
}
else{
ret = 2 ;
}
}
else{
ret = 3 ;
}
return ret ;
}
■条件をひっくり返して早く返るとネストが浅くなる
int early_return( uint8_t input){
if(input < 50){
return 3;
}
if(input < 200){
return 1;
}
return 2;
}
ネストが浅くなりコードが単純になります。
■まとめ(コンパイル可能な検算)
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
//深いネストは理解しにくい
int deep_nest( uint8_t input){
int ret ;
if( 50 <= input ){
if( 200 > input ){
ret = 1;
}
else{
ret = 2 ;
}
}
else{
ret = 3 ;
}
return ret ;
}
//条件をひっくり返して早く返るとネストが浅くなる
int early_return( uint8_t input){
if(input < 50){
return 3;
}
if(input < 200){
return 1;
}
return 2;
}
int main(void){
for(int i = 0; i < 256; i++){
int d = deep_nest(i);
int e = early_return(i);
if(d != e){
abort();
}
printf("%d\n",d);
}
}