摘要:無關對錯,只是邏輯
前陣子review member的code發現一段有趣的判斷
用學校常會用的例子來說明會像是...判斷一張考卷的成績
低於60顯示D
60~79顯示C
80~89顯示B
90~99顯示A
100顯示A+
這樣,然後code就會長這樣
if( source < 60 )
{
Console.WriteLine( "D" );
retuen;
}
else if( source >= 60 || source < 80 )
{
Console.WriteLine( "C" );
retuen;
}
else if( source >= 80 || source < 90 )
{
Console.WriteLine( "B" );
retuen;
}
else if( source >= 90 || source < 100 )
{
Console.WriteLine( "A" );
retuen;
}
else if( 100 == source )
{
Console.WriteLine( "A+" );
retuen;
}
看起來是符合需求,結果也是預期中的...那問題在哪呢?
問題在這個if else是平鋪直述把文字描述做出來沒有真的想想if else的判斷啊
在本例來說,第二個if else根本不需要判斷分數是否大於60阿
因為小於60的都一定先被第一個if處理掉了,來到第二個的一定大於60..不是嗎?
所以,最後一個100分,也一定是被篩選剩下的結果就是100分了.也不用特別去處理
if( source < 60 )
{
Console.WriteLine( "D" );
retuen;
}
else if( source < 80 )
{
Console.WriteLine( "C" );
retuen;
}
else if( source < 90 )
{
Console.WriteLine( "B" );
retuen;
}
else if( source < 100 )
{
Console.WriteLine( "A" );
retuen;
}
Console.WriteLine( "A+" );
講個無關這個範例的真實案例
某天某朋友在與客戶談需求時,客戶提到欄位A在UI顯示上
如果從資料庫撈出12個字,要縮字成12個字然後加上...
不過因為字形會有寬度不同(中英文,數字)所以他們討論了很久很久要怎樣縮才好看的邏輯
討論了許久,終於有一個兩方都能接收的妥協方案
然後UI都討論完後,要來討論資庫的設計
某朋友就問客戶....欄位A的資料在資料庫允許最大的字數是多少呢?
客戶: 12個字