减少if-else的滥用,提高代码可读性
php吧
全部回复
仅看楼主
level 15
投江的鱼 楼主
本来不想发帖的,因为一直不怎么喜欢发帖。不写太多,写太多就暴露了...
看到吧里很多人都是这样,多层逻辑嵌套,看似条例清晰、逻辑关系明了。实际上读起来真的很费力
看个最简单的例子,一吧友A想要发一个帖子宣传xx产品,需要征求所有吧主(bz1,bz2)一致同意后才可以发帖。
有人可能会这样写
看上去很自然. 逻辑也很清楚,bz1同意了之后bz2再同意肯定就没啥问题了.
有人会这样写
这样看上去逻辑更加清楚了,两个吧主同时同意.
还有第三种 第四种
以上看上去都行得通,那么现在又多个1个吧主呢?10个呢?50个呢?
第一个嵌套50个if - else
第二个写49个&&
第三个写50个if
第四个,变成50的数组。而且,同时可以分离出所有bz
$bz = [$bz1,$bz2];
function getPostAgree()
{
global $bz;
$agree = false; //flag
$agree = !in_array("disagree", $bz)
return $agree;
}
如何改进?
- 嵌套逻辑用平行逻辑代替
- 使用表驱动减少判断
- 不是必要的if-else,能不else就别else,不要if-elseif-elseif...-elseif-else
- if-return 代替 if-else
.....
2018年02月26日 12点02分 1
level 15
投江的鱼 楼主
还说一句,如果你的if超过一屏还没结束,考虑是不是该换一种逻辑.
2018年02月26日 12点02分 2
4图if有误,更正为:if(!in_array("disagree", $bz))
2018年02月26日 12点02分
level 1
感受到if return的方便和简洁之后就很少用if else结构了
2018年02月27日 01点02分 3
我现在都尽量避免if判断...
2018年02月27日 03点02分
level 8

if-return挺好用的,提高了代码可读性,并且符合单一出口原则,
2018年02月27日 02点02分 4
if-return有个最大的好处就是可以把嵌套逻辑转换为平行逻辑. 是个提高代码质量的好方法.
2018年02月27日 03点02分
level 7
[哈哈]
2018年02月27日 03点02分 5
level 16
难得好贴,帮楼主顶一下
现在网上学习的很多人以为“做出来”是唯一标准,楼主直接指出了“做出来”只是第一步,做得好才是进阶[真棒]
建议吧主大大带头在吧里带起“写优雅代码”的风潮[乖]
2018年02月27日 03点02分 6
写代码也不得不考虑后期维护。毕竟不是什么一锤子买卖,写得太糟糕了后面改起来更麻烦的
2018年02月27日 04点02分
@投江的鱼 [乖]我是知道的,吧里很多新人没这种意识,楼主大大在吧里开贴提出了这样的概念,我就是来点赞支持的
2018年02月27日 04点02分
吧主的代码我是看也看不懂,不过,觉得会编程的人好厉害啊,脑子聪明的嘞
2018年02月28日 03点02分
level 12
[呵呵]多贴代码
2018年02月27日 06点02分 7
多贴代码那应该是入门提问的基本功,很多新手差不多都是云提问,让人意念作答.
2018年02月27日 09点02分
level 12
其实不是可读性的问题,是程序扩展太差。
如果真的有这样的需求或者展望,那么就应该采用设计模式来解决,比如策略模式之类的。
2018年02月27日 09点02分 8
代码可读是基本要求,扩展性是本质上来讲,就是要求你写的代码有一定的前瞻性.可读的程序不一定扩展性好,但是扩展性好的代码一定得可读.
2018年02月27日 09点02分
@投江的鱼 难道分支结构的可读性不高?
2018年02月28日 03点02分
@投江的鱼 只不过是不太美观而已
2018年02月28日 03点02分
level 9
die() return 我用的最多的一个了。我的程序很少看到else。
2018年02月27日 13点02分 9
level 8
看数量嘛,不过if嵌套if,或者多个if-else确实不好,if-return比较推荐
2018年02月28日 08点02分 10
适当的嵌套是可以理解的,有些写代码没有留余地或者说没有前瞻性......主要是有些人代码实现的逻辑有问题,虽然都能做出来.但是代码还停留在做出来的水平上..确实不雅观.
2018年02月28日 12点02分
level 1
有时候业务复杂起来,是避免不了的,还有赶项目的时候没时间去设计
2018年02月28日 10点02分 11
业务复杂和时间赶,都是借口.要么自己代码质量不过关.要么就是实现逻辑有问题.
2018年02月28日 12点02分
level 5
顶顶顶
2018年03月05日 03点03分 13
level 15
基佬搞基么
2018年03月11日 06点03分 14
丑拒帅考虑
2018年03月11日 09点03分
level 3
前排
学习中~!~
2018年03月15日 02点03分 15
level 5
实际工作中你就知道了,没那么简单
2020年07月18日 02点07分 19
实际工作中,你就是嵌套几十个if 的那种吧
2020年07月18日 17点07分
@投江的鱼 [黑线]不是, 实际上是 需求更改频繁,急着马上要,项目经过多人易手后,项目中if多就正常了。有时间谁不想写好代码
2020年07月19日 03点07分
@井九😘 [滑稽]不然你以为那么多屎山怎么来的?
2020年07月19日 03点07分
1 2 尾页