※ 本文為 MindOcean 轉寄自 ptt.cc 更新時間: 2020-04-27 10:10:02
看板 Gossiping
作者 標題 [問卦] 寫程式的時候用GoTo很恐怖嗎
時間 Sun Apr 26 22:24:21 2020
如標題
最近看旗標的書
說寫程式用goto還恐怖
動不動就會迴圈
對結構化程式很不利
怎麼講得比病毒還恐怖
有沒有八卦?
--
Believe, believe, there's magic here tonight...
Believe, believe!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.202.35 (臺灣)
※ 文章代碼(AID): #1UfPcNTL (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1587911063.A.755.html
→ : 用100個if else1F 04/26 22:24
→ : 看體重2F 04/26 22:24
→ : 過猶不及3F 04/26 22:25
→ : 改用jump4F 04/26 22:25
推 : 寫C的很愛用5F 04/26 22:25
→ : goto hell; 然後程式就爆炸ㄌ6F 04/26 22:25
推 : 專案大的話超難maintain, 我甚至看到有人用全域變數就7F 04/26 22:25
推 : 樓上 for while不好嗎8F 04/26 22:25
→ : 會一肚子火9F 04/26 22:25
推 : 沒結束的判斷式 或邏輯錯誤 容易無窮迴圈10F 04/26 22:25
噓 : 我都用JMP11F 04/26 22:26
→ : 那是cobol時代太多亂寫的 現在OOP已經很少看到goto12F 04/26 22:26
→ : 跟遞迴一樣不是給人類用的13F 04/26 22:27
推 : 之前我同事寫段debug code 用goto跳過14F 04/26 22:27
噓 : 最好是沒看過。 自己弱15F 04/26 22:27
推 : 機械碼就GOTO來GOTO去 為啥寫程式不能GO16F 04/26 22:27
→ : 之後整個程式變慢 過了好久才找到這個原因17F 04/26 22:27
推 : 這會使維護不方便,對機器倒是沒什麼差18F 04/26 22:28
推 : 我都寫 went to19F 04/26 22:28
→ : 不知道compiler怎麼處理這段goto20F 04/26 22:28
推 : 你去看Linux kernel,很多error handling都用goto,簡21F 04/26 22:28
→ : 單明瞭好用
→ : 單明瞭好用
推 : 以前RO寫MACRO GOTO非常好用== 然後release23F 04/26 22:28
→ : 如果有一個人跟小組作業,寫一堆goto24F 04/26 22:28
噓 : go to 玩到最後連你自己都看不懂 = =25F 04/26 22:28
推 : 可以 是可以 有更好用的 為什麼不改?26F 04/26 22:29
→ : 寫驅動不用 goto 很難讀也很容易漏, 自大的人才認為27F 04/26 22:29
→ : 保證容易出錯,也很難看懂在寫什麼28F 04/26 22:29
→ : 所有程式都應該使用同一準則29F 04/26 22:29
推 : 雙層for的時候超好用阿30F 04/26 22:29
推 : 同意 JasperChang31F 04/26 22:31
→ : 跳多層迴圈比較好用 但很多人跟看到鬼一樣死都不用32F 04/26 22:32
→ : 想釣jserv?33F 04/26 22:32
推 : 是很厲害好嗎?看看太吾繪卷 能寫出go to 堪稱經典34F 04/26 22:33
→ : 的遊戲
→ : 的遊戲
推 : 我都用call/cc36F 04/26 22:33
推 : batch 檔 寫簡單的蠻好用的啊37F 04/26 22:33
推 : 合理用goto可以減少撰寫的功夫,但要設計好38F 04/26 22:33
→ : 亂跳一通,會在維護時讓人想死
→ : 亂跳一通,會在維護時讓人想死
推 : 寫goto很難維護很難trace40F 04/26 22:36
→ : 想挖洞的時候,就不解釋了。工程師應該團結的41F 04/26 22:38
推 : goto寫在函式裡出不去,會亂就再切細點,主程式乾淨就好42F 04/26 22:38
推 : 有bug 很難抓43F 04/26 22:39
推 : 我看code上會用goto都是當有error時 要讓function 能做些44F 04/26 22:39
→ : 做些要離開function前的處裡
→ : 做些要離開function前的處裡
推 : 外行的才這樣說46F 04/26 22:41
推 : 疊疊樂 懶得重打差不多的47F 04/26 22:41
推 : 你可以在寫一個現實err msg的程式就好了48F 04/26 22:41
→ : 顯示
→ : 顯示
→ : 比方說 close fd 或者 release memory50F 04/26 22:42
推 : goto 糞51F 04/26 22:43
推 : Error或Exception沒必要堅持不用GoTo52F 04/26 22:43
→ : 前人寫一堆goto常造成loop QwQ53F 04/26 22:44
推 : 我是來自2007年的watashiD54F 04/26 22:45
推 : 只有現在的你看得懂的東西很難維護55F 04/26 22:45
→ : 我用了goto 2020指令來到這邊56F 04/26 22:45
推 : 不會,很好玩又方便。57F 04/26 22:46
→ : 組語一堆goto58F 04/26 22:47
推 : 用在需要release的時候還不錯用59F 04/26 22:48
推 : 不給用goto的書可以扔了。60F 04/26 22:53
推 : 461F 04/26 22:56
推 : 沒想好用goto會跟地獄一樣 例外或錯誤處理是主要用途62F 04/26 22:57
噓 : ...63F 04/26 22:58
→ : 484想釣64F 04/26 23:00
推 : 組語:65F 04/26 23:06
→ : 從沒在用goto的66F 04/26 23:07
推 : 天下間 只有組合語言嗎?.....67F 04/26 23:08
噓 : 寫組合語言,你能大量享受68F 04/26 23:11
推 : goto會讓一片敘述變成循序執行,如果只有兩件事要做是69F 04/26 23:12
→ : 還好,擇一跳開,但如果日後又多了其他敘述參雜,到
→ : 時又更多goto跑來跑去,因為沒有平行選擇的概念
→ : 還好,擇一跳開,但如果日後又多了其他敘述參雜,到
→ : 時又更多goto跑來跑去,因為沒有平行選擇的概念
→ : 沒不能用阿,只是以後有的語言沒這個你就沒招了。72F 04/26 23:22
推 : 就開外掛直接跳脫本圈邏輯啊 還不一定回來73F 04/26 23:23
→ : 其實問題不在goto 而在沒有納入整體邏輯考慮
→ : 其實問題不在goto 而在沒有納入整體邏輯考慮
推 : 認真回。舉個例子,在kernel寫c的時候,goto可以讓function75F 04/26 23:28
→ : 內處理失敗的routine更優雅。後半段失敗的routine部分跟前半
→ : 段正常執行的routine會有對稱感。如果沒goto,常見的替代方
→ : 式是多n個變數,例如err、is_open等方式去記錄已經操作的狀
→ : 態,當這個fun走到一半而失敗需要回復時,就要一個一個檢查
→ : 做了那些而去反向操作,例如已經開檔的就要關檔才退出fun。
→ : 這樣寫法code會很雜亂,所以才有利用goto的對稱寫法。
→ : 內處理失敗的routine更優雅。後半段失敗的routine部分跟前半
→ : 段正常執行的routine會有對稱感。如果沒goto,常見的替代方
→ : 式是多n個變數,例如err、is_open等方式去記錄已經操作的狀
→ : 態,當這個fun走到一半而失敗需要回復時,就要一個一個檢查
→ : 做了那些而去反向操作,例如已經開檔的就要關檔才退出fun。
→ : 這樣寫法code會很雜亂,所以才有利用goto的對稱寫法。
推 : 樓上goto82F 04/26 23:30
推 : goto本人回應欸XD 不過還是要說能讓大家看得懂的code才83F 04/26 23:31
推 : goto本人84F 04/26 23:31
→ : 是好code85F 04/26 23:31
推 : 這也能釣到本人 XD86F 04/26 23:31
推 : goto超爛87F 04/26 23:32
→ : 其實就是看人的本事 沒把握就別用88F 04/26 23:36
→ giaour …
推 : goto本尊XD90F 04/26 23:38
推 : 我10年前goto就一直跑到現在了給你參考91F 04/26 23:45
→ : TODO才可怕92F 04/26 23:55
推 : 式的93F 04/26 23:58
推 : high level的別用94F 04/27 00:17
推 : 真的不行再用95F 04/27 00:46
→ : goto本人講的聽起來就很有說服力 XD96F 04/27 00:57
噓 : 救急的時候很好用,一般真的不要考慮去使用。97F 04/27 01:03
推 : goto 就是太縱容自己的行為98F 04/27 01:15
噓 : 組合語言用一堆99F 04/27 01:28
推 : 用的好的話很棒,用不好的話很慘100F 04/27 02:38
推 : 看情況 可讀性101F 04/27 03:49
→ : 有人蠻低能的用 do while break 解 沒意義
→ : 有人蠻低能的用 do while break 解 沒意義
推 : 恐怖喔 恐怖到了極點喔103F 04/27 06:10
推 : 本人都來惹 我信你104F 04/27 07:17
噓 : 邏輯不好的人看不懂、不會用、不敢用…105F 04/27 08:00
推 : 盡量不用 代表程式沒有系統性 亂跳 自己看還可 看別人的想死106F 04/27 09:26
→ : 小程式還好 我手邊有隻程式超過10萬行 你敢goto來goto去??
→ : 出問題debug不容易
→ : 小程式還好 我手邊有隻程式超過10萬行 你敢goto來goto去??
→ : 出問題debug不容易
--
※ 看板: Gossiping 文章推薦值: 0 目前人氣: 0 累積人氣: 824
2樓 時間: 2020-04-26 23:57:08 (台灣)
→
04-26 23:57 TW
天才才能用goto 問題你有把握掌握所有任何狀況goto出去沒問題 不能出問題才goto回來解決 像是有人goto枋寮 出問題才goto回台北 這肯定很蠢
3樓 時間: 2020-04-27 00:36:35 (台灣)
→
04-27 00:36 TW
如果是小程式,goto還好啦!但如果是大程式用goto,保證日後在debug的時候會瘋掉,因為goto來goto去,程式跳來跳去,會找不到這個goto到底是那一行!
回列表(←)
分享