※ 引述《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