
今天被要求把段改成else
if(file_exists($fn))
{
//printf("it is a file\n");
$re = $serv->sendfile($fd, $fn);
//printf("Send %s\n", $re ? "Success" : "Failed");
return;
}
$serv>send($fd, $result);
改成
if(file_exists($fn))
{
//printf("it is a file\n");
$re = $serv->sendfile($fd, $fn);
//printf("Send %s\n", $re ? "Success" : "Failed");
}
else
{
$serv->send($fd, $result);
}
忙分析下哪好,什:)
1 cnhongwei 2015-04-01 11:01:37 +08:00 程序当然只有一个出口好。 |
2 yangqi 2015-04-01 11:07:09 +08:00 两个逻辑关系完全不一样的,严格讲当然是if else更加严谨,而且也更加容易明白 |
3 Phariel 2015-04-01 11:07:27 +08:00 多入口单出口,准则。 |
4 zhujinliang 2015-04-01 11:17:14 +08:00 带else的好,这个操作跟return没大关系,return可能会对理解有些干扰,再者保不齐之后要加点别的操作呢。。 一般分支决定return啥的话,会写成 if (a) { return A; } return B; 其他情况下不大会省略else |
5 angelface 2015-04-01 11:20:16 +08:00 if else的逻辑性会很好, if (x) return主要是防御性编程, 更多的时候是用来处理代码中的异常分支。 |
6 df4VW 2015-04-01 11:32:29 +08:00 Use a guard clause instead of wrapping the code inside a conditional expression. |
7 fliar OP 嘿嘿,其实我是同意@df4VW,不过我还是愿意听听大家怎么说 我个人觉得一堆if else if无论逻辑性和可读性都不如if return 至于多入口单出口,抱歉我愚昧不知道这准则,但是我想也不会有人为了这准则都用回goto:) 有冒犯的话先陪个不是,不好意思啦请不要生气,这个例子其实我想两个不会差很多 |
8 funagi 2015-04-01 12:02:30 +08:00 个人以前常用else,现在常用return,偶尔用用else,视具体情况而定,没有绝对的谁优谁劣。 当执行到return,意味着后面的代码不用浪费时间看了。 用if return方便把混在一起的逻辑拆开,实现代码块单一职责。 |
9 xylophone21 2015-04-01 12:38:04 +08:00 如果你的函数有资源回收之类的时,你会发现goto都忍不住用啊. 要不怎么会有do{}while(0)这种呢 |
10 yleo77 2015-04-01 13:10:59 +08:00 via iPhone 以前是 if else, 现在是 return ,以后也return。 当然不绝对。 这有一定程度上属于编程风格,但我视这种风格的转变为程序员成长的一个小体现。 |
11 invite 2015-04-01 13:35:18 +08:00 看到标题就想到这个了。 |
12 tsxm 2015-04-01 14:35:09 +08:00 喜欢return,无用逻辑早点结束,不然套的if else太深 |
13 newtonisaac 2015-04-01 14:40:25 +08:00 return, 看得清楚比看不清楚好。 |
14 xsseroot 2015-04-01 14:41:48 +08:00 第二个,逻辑更清晰~ |
15 humiaozuzu 2015-04-01 14:44:17 +08:00 都可以,看语言的动态类型还是静态的。。。 |
16 kk71 2015-04-01 17:54:41 +08:00 return |
17 lepture 2015-04-01 17:58:34 +08:00 看你的语言有没有偏好。个人偏好 return early |
18 Mutoo 2015-04-01 18:06:35 +08:00 return,及早结束。 |
19 sb 2015-04-01 18:10:58 +08:00 偏向 if else |
20 akira 2015-04-01 18:27:26 +08:00 if else的 代码结构化更好。 有时候会出现多个退出条件的判断,这种情况下个人更偏向第一种写法。 |
22 G2bN4dbX9J3ncp0r 2015-04-01 18:31:50 +08:00 没有return的语言只能用if else了 |
23 cxshun 2015-04-01 18:32:04 +08:00 以前喜欢if else,现在喜欢return,没用的代码早点结束,看着舒服多了,而且嵌套层次也可以少点。 |
24 ellipse42 2015-04-01 23:57:04 +08:00 raise |
25 Septembers 2015-04-02 03:55:09 +08:00 via Android |
26 Septembers 2015-04-02 03:58:58 +08:00 via Android 修正 单出口 我是指function内只有一个return |
27 blue7wings 2015-04-02 09:32:20 +08:00 我还是比较倾向于第一个的,但是如果有多个if,我更喜欢用goto语句: if(file_exists($fn)){ //printf("it is a file\n"); $re = $serv->sendfile($fd, $fn); //printf("Send %s\n", $re ? "Success" : "Failed"); goto end; } if (condition) { //something error goto end; } $serv->send($fd, $result); end: return false; 有点try-catch的意思了... |
28 iyangyuan 2015-04-02 13:09:48 +08:00 虽然单出口是原则,但我还是觉得有时候用return 可以使代码很简洁易读,读者不必读完整个代码段。尤其是在做参数合法性的时候。 |