添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1.并列关系,可以用两种方法

	if(0xF0 ==rx_buf[0]&&0xF0 ==rx_buf[1]&&0xF0 ==rx_buf[2]&&0xF0 ==rx_buf[3]&&0xF0 ==rx_buf[4]&&0xF0 ==rx_buf[5])
		About();

(1). 拆分成几个if,还是太长,用第二种方法

if(0xF0 ==(rx_buf[0]&0xFF) && 0xF0 == (rx_buf[1] &0xFF) ) if(0xF0 ==(rx_buf[2]&0xFF) && 0xF0 == (rx_buf[3] &0xFF) ) About();

(2). 条件不成立时跳过后面的判断

if(0xF0 !=(rx_buf[0]&0xFF) return; if(0xF0 !=(rx_buf[1]&0xFF) return; if(0xF0 !=(rx_buf[2]&0xFF) return; if(0xF0 !=(rx_buf[3]&0xFF) return; About();

2.或关系,可以用两种方法

(1). 拆分成几个if,也可以把上面方法(2)按照这样写。

int ReceiveUI()  
	u8 b=0;
	if(!IF_SLUI_DIS)
		if(IF_DMXIN_OK)//11
			SET_SLUI_DIS;
			//Event_CLR(EVENT_LEVE_DISP);// 
			// ClrBits(WL_ui,BIT2);
			// gSelected=0;
			// submenu_Set(menu4_SET.Select_arrow,0);
			b=1;
	if(GetBits(DMX_WL_ui,BIT2))
		//Event_CLR(EVENT_LEVE_DISP);// 
		// ClrBits(WL_ui,BIT2);
		// gSelected=0;
		// submenu_Set(menu4_SET.Select_arrow,0);
		b=1;
	if(b)
		Event_CLR(EVENT_LEVE_DISP);// 
		ClrBits(WL_ui,BIT2);
		gSelected=0;
		submenu_Set(menu4_SET.Select_arrow,0);
return b;  

(2). 使用goto,和上面同样的效果,这样被封印的goto又被用起来了

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();
	// while (1);		
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这是判断条件...