失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 气味识别应用_解决气味

气味识别应用_解决气味

时间:2022-12-08 16:55:33

相关推荐

气味识别应用_解决气味

气味识别应用

有时,我们在代码库中可能会遇到一些巨大的if语句。 这些语句必须维护并一次又一次地更改相同的代码块。 在if语句检查变量是否属于某个值范围内的情况下,这也是常见的。

假设您有一个枚举

public enum FoodType {FRUIT,VEGETABLES,RED_MEAT,WHITE_MEAT,FISH,DIARY,CERIAL}

而且您有一个功能可以提出一些建议

public String recommend(FoodType foodType) {if(foodType==FoodType.FISH||foodType==FoodType.RED_MEAT||foodType==FoodType.WHITE_MEAT) {//execute a procedure} else if(foodType==FoodType.FRUIT||foodType==FoodType.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}}

如果将更多食物类型添加到枚举中,则开发人员将只需更改集合的结构并添加其他食物类型。

这将比更改代码的多个部分容易得多,并且可读性更高。

翻译自: //07/fixing-if-smell.html

气味识别应用

如果觉得《气味识别应用_解决气味》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。