Re: [閒聊] 一個函式2000行, 一個if 300行

看板Soft_Job (軟體人)作者 (llll)時間10年前 (2015/06/10 19:31), 10年前編輯推噓24(24024)
留言48則, 36人參與, 最新討論串1/3 (看更多)
※ 引述《guest0970 (guest)》之銘言: : 而且還有很多goto... 你們遇過類似的程式嗎? 俗語說:存在的就是有他的道理 如果上面這句話成立 那為甚麼大家討厭的 goto 這個功能會繼續保留呢? 明明就會把程式結構搞亂(每本書都這樣講,...也建議不要用goto) , 那為甚麼不從源頭把 goto 取消? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.190.1

06/10 19:31, , 1F
為了相容
06/10 19:31, 1F
※ 編輯: bota (1.167.190.1), 06/10/2015 19:35:44

06/10 19:39, , 2F
goto沒這麼萬惡
06/10 19:39, 2F

06/10 19:42, , 3F
goto不是不能用而是要謹慎使用
06/10 19:42, 3F

06/10 19:44, , 4F
萬惡 goto,用者死
06/10 19:44, 4F

06/10 19:56, , 5F
C之後的程式語言,很多都把goto語法拿掉了
06/10 19:56, 5F

06/10 19:59, , 6F
goto可以用 但是不要濫用
06/10 19:59, 6F

06/10 20:02, , 7F
相容
06/10 20:02, 7F

06/10 20:36, , 8F
Linux kernel 滿天的goto,不要把goto妖魔化了~
06/10 20:36, 8F

06/10 20:37, , 9F
嵌入式常用 goto
06/10 20:37, 9F

06/10 20:57, , 10F
其實像Java就沒有goto,但是還是把他放保留字
06/10 20:57, 10F

06/10 21:02, , 11F
C的goto很常見
06/10 21:02, 11F

06/10 21:03, , 12F
C 做 error handling 有時候沒有 goto 反而更難懂
06/10 21:03, 12F

06/10 21:04, , 13F
破壞最佳化的副作用 有時候是好處
06/10 21:04, 13F

06/10 21:07, , 14F
Linux kernel的goto也幾乎只拿來做init/destroy就是了
06/10 21:07, 14F

06/10 21:07, , 15F
對樓上那句看的不是很懂
06/10 21:07, 15F

06/10 21:07, , 16F
樓樓上
06/10 21:07, 16F

06/10 21:19, , 17F
我學的時候就叫我不要用了,有人可實際範例示範好處嗎
06/10 21:19, 17F

06/10 21:24, , 18F
c 遺毒
06/10 21:24, 18F

06/10 21:33, , 19F
某些很深的func call,用goto能減少return的效能浪費
06/10 21:33, 19F

06/10 21:54, , 20F
推cha大
06/10 21:54, 20F

06/10 22:16, , 21F
底層有時候goto很好用,像是driver的error handle
06/10 22:16, 21F

06/10 22:27, , 22F
c沒goto的話會很麻煩....
06/10 22:27, 22F

06/10 22:36, , 23F
組合一堆jmp jxx 就是goto呀 XD
06/10 22:36, 23F

06/10 22:36, , 24F
goto 不是罪
06/10 22:36, 24F

06/10 22:39, , 25F
寫底層firmware就有可能會使用到goto
06/10 22:39, 25F

06/10 22:42, , 26F
很常看到 if (error) goto exit_handle; 之類的寫法啊?
06/10 22:42, 26F

06/10 22:42, , 27F
可以做到有點像 try { } finally { } 的感覺
06/10 22:42, 27F

06/10 22:46, , 28F
goto在進入/離開順序相反時很好用
06/10 22:46, 28F

06/10 23:41, , 29F
goto是好東西, 問題在於會不會用
06/10 23:41, 29F

06/10 23:43, , 30F
C因為沒有try-throw-catch的語法, 所以一定要有goto
06/10 23:43, 30F

06/11 02:21, , 31F
我寫java的時候就常常在想.... 把goto還給我 QAQ
06/11 02:21, 31F

06/11 07:42, , 32F
有沒有可能是compiler為了相容之前有goto的code,所
06/11 07:42, 32F

06/11 07:42, , 33F
以含淚繼續保留goto?
06/11 07:42, 33F

06/11 09:43, , 34F
goto沒那麼邪惡,但是要確保寫的人邏輯要很好,不會出
06/11 09:43, 34F

06/11 09:43, , 35F
06/11 09:43, 35F

06/11 09:46, , 36F
goto就搞不清楚程式流程怎跑會寫出未爆彈..
06/11 09:46, 36F

06/11 11:22, , 37F
嵌入式的確常用goto switch case也都沒被取消
06/11 11:22, 37F

06/11 11:26, , 38F
曾經讀過 Linux coding style
06/11 11:26, 38F

06/11 11:26, , 39F
其中有一條就說:如果知道這程式在幹嘛 不反對用goto
06/11 11:26, 39F

06/11 11:30, , 40F
打從全世界第一個高階語言就有 goto 只是我幾乎沒在用
06/11 11:30, 40F

06/11 11:56, , 41F
對第一個寫的人來說goto是神器
06/11 11:56, 41F

06/11 12:52, , 42F
通常也只用在 error handle 向下 goto 吧
06/11 12:52, 42F

06/11 12:52, , 43F
跟時間機器一樣向上goto有人的頭就要爆炸了XD
06/11 12:52, 43F

06/11 16:18, , 44F
其實 try catch 也是一種goto啊... = =
06/11 16:18, 44F

06/12 01:05, , 45F
goto太好用,以致怕不會用的人亂用,乾脆叫你不要用
06/12 01:05, 45F

06/12 02:26, , 46F
goto不邪惡,邪惡的是coder的觀念....
06/12 02:26, 46F

06/12 02:26, , 47F
好goto的兩大前提:1.同函式內要保持同向性
06/12 02:26, 47F

06/12 02:26, , 48F
2.不要交錯goto的path
06/12 02:26, 48F
文章代碼(AID): #1LU206nZ (Soft_Job)
文章代碼(AID): #1LU206nZ (Soft_Job)