免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 三月廿七
打印 上一主题 下一主题

我觉得反对 goto的都是菜鸟 [复制链接]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
21 [报告]
发表于 2012-01-02 12:32 |只看该作者
本帖最后由 MMMIX 于 2012-01-02 12:33 编辑
KanonInD 发表于 2012-01-02 12:20
Dijkstra? 算法? 估计不是指算法。


http://en.wikipedia.org/wiki/Goto

Edsger Dijkstra (March 1968). "Go To Statement Considered Harmful"
Donald Knuth (1974). "Structured Programming with go to Statements"

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
22 [报告]
发表于 2012-01-02 12:38 |只看该作者
幻の上帝 发表于 2012-01-02 11:22
又鞭尸 Dijkstra 菜鸟么。。。


這純屬於躺著中槍。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
23 [报告]
发表于 2012-01-02 12:40 |只看该作者
一个关键词,不用搞得上纲上线。有些"幼教"说不能"goto",一是担心他人学坏,二是自己未曾体会到goto的巧妙,自己被禁锢在了NS盒子里,其结果就是害人不浅,毁人不倦。

if条件判断不在于嵌套多少次,才能使用goto,至于从最里层跳出的,某些情况下可以使用 do {....} while(0)的语句套在最外层,然后break跳出来。

但是如果出现多个平行的if,比如在网络协议层处理各种可能性时,goto是最简便的。如果按照这些"幼教",协议栈就会臃肿不堪了。如果有认为goto一无是处的,请尝试将协议栈里的goto去掉,对比前后的效率再来评价。

论坛徽章:
0
24 [报告]
发表于 2012-01-02 12:51 |只看该作者
KanonInD 发表于 2012-01-02 12:20
Dijkstra? 算法? 估计不是指算法。

我记得提到goto都会提到D老的,D老还有篇文章反goto的

就goto使用来说,我记得某个地方说过尽量避免往回跳的goto就能避免大部分的滥用。
往一些block里面跳是不推荐的,流程会变得生涩。到现在为止,我遇到的代码只要考虑清楚了逻辑,梳理透彻了来龙去脉,还没发现需要写的这么晦涩的。很多时候代码写的晦涩是因为作者自己还没有弄清楚要表达的语意。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
25 [报告]
发表于 2012-01-02 13:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
26 [报告]
发表于 2012-01-02 13:35 |只看该作者
没想到像lz这样的老鸟也会纠结这个问题!

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
27 [报告]
发表于 2012-01-02 13:39 |只看该作者
pmerofc 发表于 2012-01-02 13:07
很多东西就是这样
你不矫枉过正地说它有害
就一定有人滥用


只要不因噎廢食就好。

论坛徽章:
0
28 [报告]
发表于 2012-01-02 14:00 |只看该作者
人都有一阵子纠结吧,
要不要goto?
要不要匈牙利表示法?
if难道真不如switch?
函数要不要加virtual?
对象能否复制/赋值?
用原生的api还是可移植的库,可移植性的成本考虑在哪里?
。。。


论坛徽章:
0
29 [报告]
发表于 2012-01-02 14:17 |只看该作者
本帖最后由 三月廿七 于 2012-01-02 23:51 编辑
AD8018 发表于 2012-01-02 14:00
人都有一阵子纠结吧,
要不要goto?
要不要匈牙利表示法?

写代码不动脑子的就不会纠结,

你楼上说的是反语, 不过我没兴趣鸟他,
免得碰上一个水军,浪费时间
gui.rar (429.7 KB, 下载次数: 96)

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
30 [报告]
发表于 2012-01-02 15:24 |只看该作者
三月廿七 发表于 2012-01-01 21:25
经过我多次实践证明,goto 是一个不可缺少的关键字,

goto 除了可以用作错误处理、跳出深层循环之类的 ...

if嵌套层次太多是因为你没有学会灵活使用switch
多看些老外写的代码,里面有很多巧妙使用switch和while的方法
再怎么说while难看,一个while加一个switch也比套5-6层if看着舒服吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP