Re: [闲聊] 各种神人的code

楼主: tyc5116 (累人啊....)   2014-09-08 23:13:44
我也来分享一个,与数据库连结的相关程式码
if (!connected())
{
if (!connected())
{
if (!connected())
{
goto Err;
}
}
}
大概的意思是这样吧,看到goto我就跑去喝饮料了(因为要降火气XD)
作者: YahooTaiwan (超可爱南西我老婆)   2014-09-08 23:16:00
goto 很好用阿
作者: keieykdx (YOz桑)   2014-09-08 23:48:00
因为很重要,所以要说三次
作者: zkw (古惑仔)   2014-09-08 23:58:00
retry两次的意思
作者: DWR (罗杰)   2014-09-09 00:04:00
程式可能有bug所以尝试个三次臭了吗
作者: lNishan (紫小霓)   2014-09-09 00:12:00
每次看到goto都会想到Apple bug XD
作者: zelda123 (丸子)   2014-09-09 00:22:00
goto有什么问题吗? C很常用啊
作者: workworkwork (workworkwork)   2014-09-09 00:23:00
我写C倒是不太会用GOTO~@@~但听说setjump和longjump很常用?
作者: rodion (r-kan/reminder)   2014-09-09 00:26:00
在某些相对单纯的error handling上 用goto或许可以接受啦尤其是在try-catch并不倾向能够被广泛运用的场合
作者: YahooTaiwan (超可爱南西我老婆)   2014-09-09 01:02:00
因为课本有教,不要用 goto?
作者: clarkman (凉雨)   2014-09-09 01:11:00
有些driver也很多goto,通常是为了做error handle
作者: yyc1217 (somo)   2014-09-09 01:13:00
其实我觉得蛮浅显易懂的呀...
作者: askacis (ASKA)   2014-09-09 01:28:00
goto在linux世界里很正常啊,不是不能用而是不要乱用
作者: manlike ( )   2014-09-09 07:46:00
linux kernel 一堆goto
楼主: tyc5116 (累人啊....)   2014-09-09 08:20:00
我这个例子有那么底层吗?只是在连数据库耶...
作者: su27 (su27)   2014-09-09 08:46:00
组合语言 机器语言用的也是goto 书上写用GOTO不好 我看了也觉的很奇怪 你用一个for循环 里面就是一个goto的命令
作者: askacis (ASKA)   2014-09-09 08:56:00
即时是userspace的code,goto还是很常见
作者: arenda (phantom in my heart)   2014-09-09 09:12:00
连数据库扯啥linux kernel和driver? 你们真的是工程师?
作者: manlike ( )   2014-09-09 09:23:00
你怎么不先去搞懂为何Linux kernel要使用goto?
作者: azureblaze (AzureBlaze)   2014-09-09 10:12:00
组语当然一堆goto,但for都帮你包起来了为何还要用?
作者: askacis (ASKA)   2014-09-09 10:26:00
跟底层没关系,而是要清楚goto的使用时机以及人家是怎么用的,而非看到goto就直觉不能用~
作者: v7q4 ((.)(.)乳剑双修 -|=>)   2014-09-09 10:48:00
逻辑清楚的话 goto是非常好用的
作者: Ting1024 (无)   2014-09-09 11:41:00
我觉得这个CODE很棒。没什么好嫌的
作者: atst2 (atst2)   2014-09-09 11:55:00
http://ppt.cc/vPuw 'goto fail' on ssl
作者: askacis (ASKA)   2014-09-09 12:44:00
goto fail是bug,但难道for while有的没的语法就不会有?语法本身不是问题,有问题的是使用的人~
作者: atst2 (atst2)   2014-09-09 12:48:00
人非圣贤..本来各种建议,范式,模式,习惯,就是想尽量避免这些不小心所造成的错误. if(const == var)和 if(var ==const)两种都一样逻辑,为什么建议用第一种?goto不是不可以用,但是用了就要自己皮绷紧一点, 也要叫后面维护的人注意一点.
作者: saxontai (黑暗,点缀孤零零的星)   2014-09-09 13:00:00
apple 的 ssl bug 问题出在人,根本不在 goto...(茶)
作者: xsion (Xsion)   2014-09-09 14:44:00
你踩到程设万年战点了... goto能用否?
楼主: tyc5116 (累人啊....)   2014-09-09 15:01:00
"理论上是不需要goto的,一定有另一个方法可以取代goto叙述...(略),我只建议当它优于其它可用的方法时才使用之"以上是书上说法,我想不到连个数据库有一定要用goto的必要拜托哪个高手来开释一下,还有没人觉得那三层if很碍眼吗XD
作者: meowyih (meowyih)   2014-09-09 15:13:00
理论上是不需要用到recurrsive的,所有的recurrsive都可以改写成 non-recurrsive function... 但这不能拿来当不准用 recurrsive function 的理由啊 XDDDD
作者: b6byc (oopp)   2014-09-09 15:15:00
goto有时很好用啊.不过这样写,看久会头晕.因为else 有时要考量.
作者: askacis (ASKA)   2014-09-09 16:57:00
我还是搞不懂连数据库跟用goto有什么关系?没有规定一定要用反之也没说不行,问题是有些人看到goto就嫌碍眼,可能大学老师都是这样教就一辈子这样觉得了吧或是眼界不够开,不知道这世界上有一堆优秀的开源大量使用goto在正确的地方上,那么吾人也爱莫能助了~~不只Linux kernel &driver用goto,一狗票的userspace开源专案也都用goto,到底连个数据库有多伟大到看到goto就嫌碍眼wwww
作者: saxontai (黑暗,点缀孤零零的星)   2014-09-09 17:16:00
跟上层还是底层也没啥关系吧,对 C 来说,做错误处理跟资源释放,恰当地使用 goto 可以让程式有良好的可读性跟可维护性。
作者: YahooTaiwan (超可爱南西我老婆)   2014-09-09 21:37:00
尽信书不如无书 书上写不要用 goto 的理由让人喷饭
作者: y3k (激流を制するは静水)   2014-09-09 21:42:00
重要的东西就是要千锤百炼一下
作者: YahooTaiwan (超可爱南西我老婆)   2014-09-09 21:44:00
因为有其他用法可以替代 goto,所以千万不要用 goto这什么逻辑?? 有人能帮我解释一下吗??有程式美感的人就会写出漂亮的 code,与 goto 无关
作者: wotupset (wotupset)   2014-09-09 21:59:00
作者: alan3100 (BOSS)   2014-09-10 00:53:00
如果10个人里面8~9个会滥用,那就当作铁则吧不是人人都高手,另串神人code刚好对比,让他们满满goto?
作者: eva19452002 (^^)   2014-09-10 07:18:00
goto在程式界已经是万年战题了
作者: aecho (@..@")   2014-09-11 09:56:00
goto很好用,但也是争议很大的东西呀~教科书会说不要用,但去看CodeComplete2,它说的很清楚。
作者: jessichiou (JC)   2014-09-12 22:14:00
我觉得很直觉啊~就像作者在说怀一样

Links booklink

Contact Us: admin [ a t ] ucptt.com