2018年7月16日 星期一

爛 code 收集器//海海 if-else

今天要來說說這個寫法的故事

while(true)
{
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
}
先不要往下看,先猜猜這樣寫是為了什麼




心中有答案了嗎?


故事開始囉

 一般來說,常見的 if-else 會像這樣

if (xxx)
     //....
else if (xxx)
    //...
else if (xxx)
    //...
else if (xxx)
    //...
else
    //...
這樣其實只能算是常見的小海。而且經過實驗,某些 complier 還有 if-else 數量上的限制。
(有必要實驗這個時,也是很天才的code) 


經過天才的思考,捨棄了上述的方式,改用下面這個方式。

while(true)
{
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
  if (xxx){
    //...    
    break;
  }
}

還是 if-else 海,雖然突破了某 complier 的數量限制,但是卻大幅犧牲了可讀性

if (xxx){
    //...    break;
}
if (xxx){
    //...    break;
}
if (xxx){
    //...    break;
}
//....(超過限制的if-else)
break;
}

無言的聲音:
用個 switch-case 有這麼困難嗎?加個enum嘛!
也許該考慮用工廠模式呀!!

沒有留言:

張貼留言