南昌营销网站公司哪家好,如何上传程序到网站空间,wordpress 音乐播放插件,做网站的框架有有时我们可能会在代码库中遇到一些巨大的if语句。 这些语句必须维护并一次又一次地更改相同的代码块。 在if语句检查变量是否属于某个值范围内的情况下#xff0c;这也是常见的。 假设您有一个枚举 public enum FoodType {FRUIT,VEGETABLES,RED_MEAT,WHITE_MEAT,FISH,DIARY,… 有时我们可能会在代码库中遇到一些巨大的if语句。 这些语句必须维护并一次又一次地更改相同的代码块。 在if语句检查变量是否属于某个值范围内的情况下这也是常见的。 假设您有一个枚举 public enum FoodType {FRUIT,VEGETABLES,RED_MEAT,WHITE_MEAT,FISH,DIARY,CERIAL
} 并且您有一个功能可以提出一些建议 public String recommend(FoodType foodType) {if(foodTypeFoodType.FISH||foodTypeFoodType.RED_MEAT||foodTypeFoodType.WHITE_MEAT) {//execute a procedure} else if(foodTypeFoodType.FRUIT||foodTypeFoodType.VEGETABLES) {//execute a procedure} else {//execute a procedure}} 如您所见现在已做出决定。 该决定与碰巧属于特定人群的某些类型的食物有关。 鱼红肉和白肉对那些偏爱蛋白质的用户有益而水果和蔬菜更适合以纤维为基础的饮食。 在将来的情况下可能会增加该枚举并添加更多的食物类型。 如果代码块必须更改。 同样如果在其他文件中使用了这种复杂的if语句则必须更改每个文件。 不仅您将拥有巨大的if块而且还必须在每个文件上维护一个块这可能容易出错。 为了避免这种情况您可以将if语句的内容更改为一个函数。 package com.gkatzioura;import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;import static com.gkatzioura.FoodType.*;public class DietFilter {private static final Set FOODS_WITH_PROTEIN Collections.unmodifiableSet(new HashSet(Arrays.asList(FISH,RED_MEAT,WHITE_MEAT)));private static final Set FOODS_WITH_FIBER Collections.unmodifiableSet(new HashSet(Arrays.asList(FRUIT,VEGETABLES)));public static boolean proteinBased(FoodType foodType) {return FOODS_WITH_PROTEIN.contains(foodType);}public static boolean fiberBased(FoodType foodType) {return FOODS_WITH_FIBER.contains(foodType);}} 因此我们没有在if语句中添加每种食物类型的案例而是创建了一个函数来检查给定的参数是否属于特定组。 因此您的if语句将变为此。 public String recommend(FoodType foodType) {if(DietFilter.proteinBased(foodType)) {//execute a procedure} else if(DietFilter.fiberBased(foodType)) {//execute a procedure} else {//execute a procedure}} 如果将更多食物类型添加到枚举中则开发人员将只需更改集合的结构并添加额外的食物类型。 这将比更改代码的多个部分容易得多并且可读性更高。 翻译自: https://www.javacodegeeks.com/2018/07/fixing-if-smell.html