C_and_CPP 板


LINE

如題 我想goto的缺點大家一定比我還熟 可讀性變差、狀態不可預期、結構不明確…等的 但是從高中到現在 我遇到的所有教程式設計的老師 一定會教goto 卻一定會禁止我們用goto 如果它真的那麼差的話,怎麼會被留到現在? 事出必有因,我認為一定是goto有它難以取代的好處 所以在此向各位請益 板上是否有人支持goto?而支持使用goto的原因又為何? 且是否在解決什麼問題時,有「非用goto不可」的情形呢? 懇請各位解決我小小的疑惑 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.128.38
1F:推 legnaleurc:個人最常看到的用法是C在錯誤發生時跳到尾端回收資源 05/20 10:41
2F:→ legnaleurc:但是坦白說能用goto的寫法幾乎都能用另一種寫法代替 05/20 10:42
3F:→ legnaleurc:留著的原因之一只是歷史因素罷了 05/20 10:42
4F:推 wa120:有時候條件太複雜的時候真的很想用goto.... 05/20 10:43
5F:→ wa120:if else必須要很多層 用一個goto就出去了XD 05/20 10:46
6F:推 Ebergies:無所謂支不支持吧, 要用就用, 不需要用時也不硬要用 05/20 10:49
7F:推 DRLai:個人的淺見,用goto沒什麼不好,只是會失去結構的完整性 05/20 10:51
8F:→ DRLai:同時造成後續維護的困難..(你的程式不見得是自己在維護) 05/20 10:51
9F:→ DRLai:我認為是能少用就少用啦..學程式到現在我還沒用過goto^^" 05/20 10:51
10F:→ james732:其實在Linux kernel source code還挺容易看到goto的 05/20 10:53
11F:→ james732:它是雙面刃 用得好就很好很強大 用的差就亂七八糟了 05/20 10:53
12F:→ james732:不過如果沒有禁止初學者用的話 通常都不會用得好... 05/20 10:54
13F:→ james732:我這學期當助教 學弟妹就亂用goto當迴圈 被我扣分 XDD 05/20 10:54
14F:→ eva19452002:我從來沒用過goto寫程式過 05/20 11:05
15F:→ ilway25:寫asm還不是一大堆jmp xdd 05/20 11:05
16F:→ netsphere:跳多層迴圈出去 GOTO 就很好用阿 05/20 11:21
17F:→ dragon0414:我就是因為從一開始就受到不能用goto的教育,演變成到 05/20 11:27
18F:→ dragon0414:現在,解決問題都是寧願用大量的額外的變數與大量的判 05/20 11:28
19F:→ Ebergies:結果浪費大量的開發時間 (咦) 05/20 11:29
20F:→ dragon0414:斷式去解決,而或許僅一個goto就可以解決? 05/20 11:29
21F:→ dragon0414:這是在最近教朋友寫C時,他非常的愛用goto 05/20 11:30
22F:→ dragon0414:他也知道不能常用,但他說這樣寫程式可以用較為直覺的 05/20 11:31
23F:→ dragon0414:方式,所以我才想到這個問題 05/20 11:32
24F:→ dragon0414:或許"禁止初學者使用",等熟悉了如記憶體配置會發生的 05/20 11:33
25F:→ dragon0414:問題之後,他也可以自己去判斷goto的使用時機 05/20 11:33
26F:→ adrianshum:我會說, 初學者遇到的問題, 總能用比 goto 更好的方法 05/20 11:41
27F:→ adrianshum:去解決. 多層迴圈, 很多時候可以抽取中間的層數為另一 05/20 11:41
28F:→ adrianshum:function, 這樣很多時就能免卻了一堆變數的情況 05/20 11:42
29F:→ adrianshum:況者太多層的迴圈, 根本就是讓人看得頭痛 05/20 11:42
30F:→ adrianshum:叫你的朋友, 把不用 goto 也能寫得游刃有餘, 才去思考 05/20 11:43
31F:→ adrianshum:什麼情況合用 goto 吧. 05/20 11:43
32F:推 stonehomelaa:以前看bbs的程式碼 常看到goto 05/20 12:25
33F:推 StubbornLin:Goto像穿牆的透明人 他可以從任一點進入 任一點離開 05/20 12:26
34F:→ StubbornLin:當發生命案時 就算是柯南來也可能找不到兇手是誰 05/20 12:27
35F:推 StubbornLin:結構化程式設計重點在於單一進入點 單一出口 05/20 12:30
36F:→ StubbornLin:在中間發生命案的話 那肯定是從單一進入點進來的 05/20 12:31
37F:→ StubbornLin:還有 你的朋友了解那些背後隱穢的事情 05/20 12:37
38F:→ StubbornLin:那請問維護的人呢? 事情如果不像表面寫的那樣 05/20 12:37
39F:→ StubbornLin:還得再深一層考慮 那樣的話 維護上就是一堆陷井 05/20 12:38
40F:→ StubbornLin:要讓別人看不懂你的程式 或是一改就出錯 05/20 12:39
41F:→ StubbornLin:goto是不錯的選擇 XD 05/20 12:39
42F:推 sunkill:有些書沒教goto 覺得該用就用 有時不用goto可讀性反而差 05/20 12:58
43F:推 os653:我印象中 goto 似乎會造成 compiler 最佳化上的困難? 05/20 13:34
44F:→ os653:不過不太確定就是了 ... 05/20 13:35
45F:推 ledia:goto 是很容易造成缺點, 而並非是一定會造成缺點 05/20 13:35
46F:→ ledia:濫用往往沒有好下場, 所以很多老師乾脆就深惡痛決的禁制 05/20 13:36
47F:→ typeotoco:如果在function內用 做好測試 當成黑盒子用 其實也不錯 05/20 14:28
48F:推 herman602:是不是有一篇論文有證明說不使用GOTO一樣可以寫出來? 05/20 16:24
49F:推 wa120:樓上 組與就是一堆goto組合而成的阿 05/20 16:28
50F:推 stonehomelaa:組語一定需要用到j開頭的 05/20 17:31
51F:推 realmojo:從沒用過goto +1 05/21 09:22







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP