我有N种方法消除 if-else,而你却无可奈何(第一篇:增强可读性)

重构技术就是以微小的步伐修改程序。重构有风险,修改需谨慎。修改越多,出错越多,重构必须系统化进行。

何时要消除代码中的 if-else:

  • 可读性差
  • 扩展性不强,违反单一职责原则,开闭原则。
    不符合SOLID原则中的”开闭原则“ ——对扩展开放,对更改封闭。每次都需要修改原有代码(对更改没有封闭),不断的添加”if else"。

有以下十种方法来消除代码中的 if-else 语句:

  • 1、卫语句
  • 2、使用 SWTICH CASE 语句
  • 3、提炼方法
  • 4、表驱动(事件委托处理模型)
  • 5、策略模式(可结合注解驱动)
  • 6、责任链模式
  • 7、状态机

1、卫语句

优点:增强了代码的可读性。但是扩展性不强。

  • 场景1:比如,条件比较多

改进前:

if (condition1) {
    
} else if (condition2) {
    
} else if (condition3) {
    
} else if (condition4) {
    
} else {
    
}

改进后:

if (condition1)
	return;
if (condition2)
	return;
if (condition3)
	return
return;
  • 场景2:if-else 语句嵌套较深

使用卫语句替换嵌套条件

改进前:

if (condition1) {
	if (condition2) {
		if (condition3){

		}
	} else (condition4) {

	}
} else if (condition5) {
	
}

改进后:

if (condition1 && condition2 && condition3) {
	return 
} 

if (condition1 && condition2) {
	reuturn
}

if (condition1 && condition4) {
	return
}

if (condition5) {
	return 
}

return;

或者提炼方法:

if (condition1) {
	methodOne();
} else if (condition5) {
	
}

2、增强扩展性

见下一篇:

  • 《我有N种方法消除 if-else,而你却无可奈何(第二篇:增强可扩展性)》

参考文献

[1]《重构》

[2] 消除 if-else:
https://www.cnblogs.com/aligege/p/12145889.html
https://blog.csdn.net/iteye_19045/article/details/103300731

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值