看板 Soft_Job 關於我們 聯絡資訊
※ 引述《neutrino (十年一夢)》之銘言: : 如果是"認為condition永遠不會跑到else" : 那就不該用if 該用assert 或者用try&catch : 如果if是用來branch, 程式原本邏輯是如下這種 : if(condition) : { : xxx(); : } : yyy(); =============================================== 現在的 C 語言 使用了 Pascal 語言之後強調的 { ... } 做為指令的 block structure , 但老式的 FORTRAN 與 COBOL 沒有如此明顯. 他想強調的應該是 structure programming 比起上面 這一句, 因為有了 { } 顯然就跟下例是不同的. 例1: if (condition) { xxx(); } else { yyy(); } 不過, 應該很少人是這樣寫 例2: if (codition ) xxx(); if ( ~condition) yyy(); ----------------------------- 原句如果拿掉 { } if (condition) xxx(); yyy(); 對老式語言習慣者, 少了 { } 跟例2或例1比, 這是比較容易看錯的. 如果是像這樣會好得多. if (codition) xxx(); // endif yyy(); =============================== : 那麼, 一定要加上else的話, : 那到底是要 : if(condition) : { : xxx(); : yyy(); : }else : { : yyy(); : } : 還是 : if(condition) : { : xxx(); : }else : { : } : yyy(); : 效果相同, 出題者到底想要哪個呢? 兩者都反而把程式的閱讀性變差, : 行數也拉長了不是嗎? 有了 { } , 怎麼寫是不容易看錯的. : coding style 有些規定大家都會同意, 例如"不要濫用goto", : 也有些規定只要在同一家公司或同一個平台裡面約定一致就好, 例如"如何縮排", : "if或else之後的{要放在同一行或是隔行"等等. : 我覺得"if後面要有else"就是屬於後面那種. : 有必要在找人的時候就要求對方的coding style和自己完全相同嗎? : : 然後再加上自訂的編號 : : 加這幾行不花幾分鐘 : : 但這幾行可能在未來 : : 節省你幾小時的debug時間!! : : 如果是寫過硬体語言的 : : 應該會習慣加上else吧 : : 不加else會有什麼產生? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.4.12