气味识别应用_解决气味
气味识别应用
有时,我们在代码库中可能会遇到一些巨大的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}}
如果将更多食物类型添加到枚举中,则开发人员将只需更改集合的结构并添加其他食物类型。
这将比更改代码的多个部分容易得多,并且可读性更高。
翻译自: https://www.javacodegeeks.com/2018/07/fixing-if-smell.html
气味识别应用
气味识别应用_解决气味相关推荐
- HighNewTech:支付宝全球首发5G手机,四大逆天功能(防骗三折叠气味识别自由飞)!
High&NewTech:支付宝全球首发5G手机,四大逆天功能(防骗&三折叠&气味识别&自由飞)! 导读 2019年4月1日,支付宝,今天重磅发布!旗下首款 ...
- 电脑不读u盘怎么解决_电脑无法识别U盘解决方法
u盘是我们在日常办公中经常需要使用到的一个移动存储设备,但有些时候我们却会遇到电脑无法识别u盘的问题,该怎么办?这里笔者就给大家带来了关于解决电脑无法识别u盘的详细解决方法,希望对你有所帮助. 电脑无 ...
- win7无法识别u盘解决方法
有部分win7系统用户发现自己的U盘插上去提示无法识别,重新拔插了之后也无法读取,在确定自己U盘没有问题的时候,那就是系统设置上的问题了,下面我们一起来看看解决方法吧. win7无法识别u盘解决方法: ...
- usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...
usb无法识别怎么办? 随着计算机硬件飞速发展,外围设备日益增多,键盘.鼠标等早已为人所共知,数码相机.MP3随身听接踵而至,这么多的设备,如何接入个人计算机?USB就是基于这个目的产生的.USB是一 ...
- java 不识别enum_Java enum关键字不识别的快速解决办法
从别人那儿拷贝过来的myeclipse java工程,打开一看标红了一大片,仔细一看,原来是不识别enum关键字,这就有点尴尬了. 我自己重新建了一个java工程,测试了下,假如我在新建工程的时候选择 ...
- phpstudy中php页面不识别php代码解决方法
phpstudy中php页面不识别php代码解决方法 参考文章: (1)phpstudy中php页面不识别php代码解决方法 (2)https://www.cnblogs.com/dailinfu/p ...
- 安装centos后 启动mysqld显示mysqld: 未被识别的服务 解决方法
安装centos后 启动mysqld显示mysqld: 未被识别的服务 解决方法 参考文章: (1)安装centos后 启动mysqld显示mysqld: 未被识别的服务 解决方法 (2)https: ...
- vue学习笔记(四)- cmd无法识别vue命令解决方法
vue学习笔记(四)- cmd无法识别vue命令解决方法 参考文章: (1)vue学习笔记(四)- cmd无法识别vue命令解决方法 (2)https://www.cnblogs.com/suRimn ...
- 教你win10系统无法识别语音识别的解决方法
win10语音识别功能给用户带来了方便,但有用户遇到了win10语音识别功能打不开的问题,怎么解决呢?就此问题,今天小编教你win10系统无法识别语音识别的解决方法吧. win10内置有语音识别功能, ...
最新文章
- 《术以载道——软件过程改进实践指南》—第1章1.1节对CMMI的基本认识
- pytorch基于卷积层通道剪枝的方法
- 转://Oracle 复合压缩索引场景及性能对比
- different behavior dialog popup display no
- centos 6.3 64bit 安装VMware workstation 9.1 64bit
- HTML代码 笔记 部分
- 【设计模式】-工厂模式->简单工厂模式(源码与类图解析)
- 线程执行完之后会释放吗_有人说,爬完黄山之后的第二件事就是去歙县徽州古城,你会去吗?...
- workman 搭建tcp服务器,和websocket互相通信
- Ceph 故障排查笔记 | 万字经验总结
- switch按钮文字切换
- 软件工程导论08-基于构件的软件开发
- java播放swf文件_Java-如何在应用程序中嵌入并执行swf文件?
- 20201214c列出最简真分数序列
- 小程序.silk转MP3格式
- 好嗨游戏:游戏界的《千与千寻》,7年等待,游戏禅师陈星汉新作《Sky光遇》登录App Store
- BCG库的一个bug
- 编程中保护眼睛的颜色
- 跟着omnipeek学802.11之Omnipeek无线空中抓包入门
- 欧几里得算法、扩展欧几里得算法(特解、应用、通解)
热门文章
- CodeForces 1517G Starry Night Camping(网络流最小割)
- AtCoder4515 [AGC030F] Permutation and Minimum(dp)
- YBTOJ:比赛得分(期望)
- AT3957-[AGC023F]01 on Tree【贪心,堆】
- P4151-[WC2011]最大XOR和路径【线性基】
- P6046-纯粹容器【数学期望,组合数】
- P3203-[HNOI2010]弹飞绵羊【分块】
- HDU6736 F.Forest Program(dfs找环)
- 【DP】【递归】分离与合体
- Full_of_Boys训练2总结