推 p52189:感謝!這一篇回覆非常仔細 1f我也曾碰到過 這一類的情況是 04/26 22:08
→ p52189:否就需要依賴經驗呢? 04/26 22:08
→ yauhh:我覺得經驗告訴我,因為公司業務類型的需求,所以程式必須變這 04/26 22:13
→ yauhh:樣,比較算是腳本風格,並且程式累贅,格式生硬,幫助少動腦... 04/26 22:14
→ yauhh:甚至有一種少動腦,使產能穩定的方式是判斷式弄很簡單: 04/26 22:17
→ yauhh: if (isSomeSituation()){ }else { doSomething(); } 04/26 22:18
→ yauhh:這種寫法取代if(!isSomeSituation()){ doSomething(); } 04/26 22:18
推 p52189:不懂前者好處是什麼? 04/26 22:29
推 v7q4:1f的兩個條件是不是寫反了? 04/26 22:44
→ yauhh:沒有,沒寫反. 第一個條件是要確定複製來源檔案確實存在, 04/26 22:57
→ yauhh:因為來源檔不在是鐵定失敗而造成程式錯誤的情況. 刪除舊檔 04/26 22:57
→ yauhh:的條件則是一要檔案已經複製出去,有備份不怕,二要要刪的檔案 04/26 22:58
→ yauhh:確實存在,以免試著刪不存在的檔案而造成程式錯誤. 04/26 22:58
→ yauhh:至於 if (isSomeSituation()){ }else { doSomething(); } 在 04/26 23:02
→ yauhh:有折行的情況,當你想要改條件說在那個狀態中要做什麼事,就 04/26 23:03
→ yauhh:貼進一行就可以. 至於判斷式是非常少有機會修改,而且閱讀時 04/26 23:04
→ yauhh:比較不用動腦. 我個人很愛拼複雜的判斷式,但是懂集合論的人 04/26 23:05
→ yauhh:實在不多. 那種寫法是我看到的lagacy code風格. 04/26 23:05
→ yauhh: legacy 04/26 23:06
→ diabloevagto:怎麼會有少機會修改就不用顧慮維護性呢... 04/27 00:39
→ diabloevagto:無論怎樣還是維護性高比較重要 04/27 00:40
→ yauhh:這樣寫的維護性很高,因為作法是將複雜的判斷式拉長為一連串 04/27 06:56
→ yauhh:等價的if-else系列. 留下的空間很方便用以行為本的方式增刪. 04/27 06:57
→ yauhh:而這種作法,我當然一點也不欣賞,只是順著目前方便配合而已. 04/27 06:58
→ diabloevagto:不好意思誤會y大了,請教能否給個例子參考看看呢? 04/27 09:43
推 kimkao:推yauhh,個人在一些案子裡面看過工程師真的是這樣做 04/27 09:46
→ kimkao:雖然不是很簡潔但概念相當清楚也好維護 04/27 09:47
推 pingsky:我是反而很推這樣雖然不簡潔但概念清楚也好維護的作法 04/27 11:36
→ pingsky:不過還是得看狀況, 看 case 的需要是如何而定 04/27 11:36
→ yauhh:我沒辦法給真的例子,因為程式都留在工作現場. 04/27 12:37
→ yauhh:不過,diablo你想要知道哪方面例子,我可以敲個sample給你看. 04/27 12:45
→ diabloevagto:"將複雜的判斷式拉長為一連串IF-ELSE" 04/27 13:11
→ diabloevagto:想知道這句話的例子,麻煩了~ 04/27 13:12
基本型: 不使用 not (!)運算,所以
if ( !a ) {
b();
}
要寫成
if ( a ) {
} else {
b();
}
複雜式化簡: 以下這樣若要反轉判斷式,邏輯技巧是笛摩根定律
if ( a || b ) { => if ( !a && !b ) {
c(); c_();
} }
不要用稍微複雜的判斷式,所以原程式寫成:
if ( a ) {
c();
} else if ( b ) {
c();
}
要反轉的時候就是改成:
if ( a ) {
//c();
} else if ( b ) {
//c();
} else {
c_();
}
※ 編輯: yauhh 來自: 59.112.224.243 (04/27 13:37)
推 diabloevagto:感謝!以前都沒接觸過 04/27 16:19
→ diabloevagto:我都是直接寫在一起... 04/27 16:20
推 p52189:原來! 04/27 20:49
推 gmoz:推 04/28 10:50