当前位置: 首页 > 后端技术 > Java

Lagou-Java工程师就业应急训练营

时间:2023-04-01 13:51:43 Java

下载:Lagou-Java工程师就业应急训练营CubZY:https://www.zxit666.com/4265/1动机有时会发现这样一串条件检查:checktheconditionsforeach不一样,但是最终的行为是一样的。这就是使用OR和AND将它们组合成一个条件表达式的时候了:组合的条件代码会说“实际上只有一个条件检查,但是有多个并行条件要检查,所以这次检查的意图更清晰。当然,合并前和合并后的代码具有相同的效果,但是原始代码中的消息是“这里有一些单独的条件测试恰好同时发生”构造通常可以准备就绪对于[distilledfunctions]的使用。将检查条件提炼成一个单独的函数,对于理清代码的含义非常有用,因为它把描述“做什么”的语句替换为“为什么这样做”。条件语句的原因对于合并也指出了不合并的原因:如果我认为这些检查确实是相互独立的,不应该被视为同一个检查,我就不会使用这种重构。2实践来确保这些条件表达式没有sideeffects如果某个条件表达式有副作用,可以先用【分离查询函数和修饰函数】来处理。使用适当的逻辑运算符将两个相关的条件表达式合并为一个。顺序执行的条件表达式用逻辑Or组合,嵌套if语句用逻辑and组合。测试。重复前面的合并过程,直到所有相关的条件表达式合并。您可以考虑在组合条件表达式上实现[细化功能]。3个案例案例1:logicorpublicintdisabilityAmount(EmployeeanEmployee){if(anEmployee.seniority<2){return0;}if(anEmployee.monthsDisabled>12){return0;}if(anEmployee.isPartTime){return0;//计算残疾金额}}复制代码这里有一系列的条件检查,所有这些都指向相同的结果。由于结果相同,因此应将这些条件检查合并为一个表达式。对于按这样的顺序执行的条件检查,您可以使用逻辑OR运算符合并。publicintdisabilityAmount(EmployeeanEmployee){if((anEmployee.seniority<2)||(anEmployee.monthsDisabled>12)){return0;}if(anEmployee.isPartTime){return0;}return1;}然后复制代码合并下一个条件检查:publicintdisabilityAmount(EmployeeanEmployee){if((anEmployee.seniority<2)||(anEmployee.monthsDisabled>12)||(anEmployee.isPartTime)){return0;}return1;}之后复制代码并合并,使用[精化函数]publicintdisabilityAmount(EmployeeanEmployee){if(isNotEligableForDisability(anEmployee)){return0;}return1;}publicbooleanisNotEligableForDisability(EmployeeanEmployee){return((anEmployee.seniority<2)||(anEmployee.monthsDisabled>12)||(anEmployee.isPartTime));}复制代码案例2:逻辑与例如嵌套if语句的情况:publicdoubledisabilityAmount(EmployeeanEmployee){if(anEmployee.onVacation){if(anEmployee.seniority>10){return1;}}return0.5;}复制代码这可以与逻辑AND运算符结合使用:publicdoubledisabilityAmount(EmployeeanEmployee){if((anEmployee.onVacation)&&(anEmployee.seniority>10)){return1;}return0.5;}复制代码如果原来的条件逻辑混合了这两种情况,我也会根据需要组合使用逻辑AND和逻辑OR运算符在此时间,代码很可能变得混乱,所以我会经常使用[refinefunction]来使代码可读。