void fun()
if((SYSDATA_HEADER_DATA!=sysdata_header)||(0xAA!=sysdata.header)||Check_ROM_date() ||0==sysdata.cct)
sysdata_header=SYSDATA_HEADER_DATA;
itemInfo_Reboot();
sysdata_save();
// while (1);
if(SYSDATA_HEADER_DATA!=sysdata_header)
goto SYSInit;
if(0xAA!=sysdata.header)
goto SYSInit;
if(Check_ROM_date() )
goto SYSInit;
if(0==sysdata.cct||0xFFFF==sysdata.cct)
goto SYSInit;
return;
SYSInit:
sysdata_header=SYSDATA_HEADER_DATA;
itemInfo_Reboot();
sysdata_save();
return;
最近,我在重构我之前的代码时,我发现早期的代码使用了太多的 if 语句,达到了我以前从未见过的程度。这就是为什么我认为分享这些可以帮助我们避免使用过多 if 语句的简单技巧很重要。接下来,我将与你一起来分享这 6 种避免过度使用 if 的方法,这不是抵制使用if的偏执,而是换一种方式来思考我们的编程思路。多态性是一个对象具有多种形式的能力,OOP 中多态性最常见的用法是使用父类引用来引用子类对象。我们知道在 JS 中函数是第一类,所以使用它我们可以将代码拆分成一个函数对象。
原文链接:http://code.joejag.com/2016/anti-if-the-missing-patterns.html
翻译: 孙薇
责编: 钱曙光,关注架构和算法领域
大约十年前,我听说了反if的活动,觉得这个概念非常荒谬。如果不用if语句,又怎么能写出有用的程序呢?这简直太荒谬了。
但之后你会开始思考:是否还记得上周你拼命想读懂的深度嵌套代码?糟透了对么?要是有办法能简化它该多好。
反if活动的网站上没给出多少实用性建议,因此在本文中,作者将会提供一系列模式,也许你会用得上。但首先我们来关
【用驱动表模式】,创建一个actionmap,key就是我们的条件case, value就是针对这个case所对应的处理函数handle. 这样也可以避免写很多if 。
【使用责任链
当有很多复杂条件时,我们会先想要把特殊一些的条件先排除掉,在逐步进行主要的分类讨论。这时候我们应该采取剥洋葱式,最外层作为第一层排除,随后在内层进行讨论。或者说对于分支语句我们应该谨慎,注意各个分支之间可能会相互影响。
通过减少代码中的条件判断来提高代码的运行速度,通常可以尝试以下方法:使用多态和继承:通过使用多态和继承,可以在运行时选择不同的代码路径,而不需要使用大量的条件判断语句。这样可以减少条件判断的数量,提高代码的可读性和性能。使用查表法:将条件判断转换为查表操作。可以创建一个预先计算好的查找表,将条件判断的结果存储在表中,然后通过查表的方式获取结果,而不需要进行条件判断。这种方法适用于条件判断的取值范围较小且有限的情况。优化算法和数据结构:通过选择更高效的算法和数据结构,可以减少代码中的条件判断。
关注、星标公众号,直达精彩内容原文链接地址:https://www.zhihu.com/question/344856665/answer/816270460观点一(灵剑):前期迭代懒得优化,来一个需求,加一个if,久而久之,就串成了一座金字塔。当代码已经复杂到难以维护的程度之后,只能狠下心重构优化。那,有什么方案可以优雅的优化掉这些多余的if/else?1. 提前return这是判断条件...