ifelse嵌套屎山的解决方法-卫语句
卫语句(Guard)
什么是卫语?卫语句是一种编程思想,提前检查边界,保卫代码。
一、什么时候使用卫语句
大厂开发规范,超过三个ifelse建议使用卫语句、策略模式、状态模式等方式重构
以下代码中使用了卫语句进行了优化,当然实际开发中业务比这个更复杂,所以更加体现了遇到复杂逻辑需要使用卫语句。
// 求100以内同时是 3,4,5 的倍数
for (let i = 0; i <= 100; i++) {
if (i % 3 == 0) {
if (i % 4 == 0) {
if (i % 5 == 0) {
console.log(i)
}
}
}
}
// 使用卫语句,从结果导向思考,摘除不是3,4,5倍数的,剩下的就是我们要的
for (let i = 0; i <= 100; i++) {
if (i % 3 !== 0) {
continue
}
if (i % 4 !== 0) {
continue
}
if (i % 5 !== 0) {
continue
}
console.log(i);
}
二、总结
- 单一嵌套ifelse分支嵌套直接使用switch就可以解决了。但是业务逻辑变得复杂时,switch恐难胜任。
- 我们发现如果按照事情发生的顺序写代码,会出现太多的ifesle分支,难以维护。这时候就需要使用卫语句提前检查边界直接return/continue掉不可能发生的分支。
- 卫语句其实是一种编程思想,从结果导向思考来优化代码。解决了ifelse的屎山代码,增加了代码的可读性和可维护性。
洗尽铅华始见金,褪去浮华归本真