重构16-Encapsulate Conditional(封装条件)
当代码中充斥着若干条件判断时,代码的真正意图会迷失于这些条件判断之中。这时我喜欢将条件判断提取到一个易于读取的属性或方法(如果有参数)中。重构之前的代码如下:
public class RemoteControl {private String[] Functions;//getter setterprivate String Name;//getter setterprivate int CreatedYear;//getter setter public String PerformCoolFunction(String buttonPressed) {// Determine if we are controlling some extra function // that requires special conditionsif (Functions.length > 1 && Name == "RCA" && CreatedYear > new Date().getYear() - 2) {return "doSomething";}return null;}}
public class RemoteControl {private String[] Functions;//getter setterprivate String Name;//getter setterprivate int CreatedYear;//getter setterprivate Boolean HasExtraFunctions; public Boolean getHasExtraFunctions() {return Functions.length > 1 && Name == "RCA" && CreatedYear > new Date().getYear() - 2;}public String PerformCoolFunction(String buttonPressed) {// Determine if we are controlling some extra function // that requires special conditionsif (HasExtraFunctions) {return "doSomething";}return null;}}
转载于:https://www.cnblogs.com/jgig11/p/5786338.html
重构16-Encapsulate Conditional(封装条件)相关推荐
- Numpy入门[16]——choose函数实现条件筛选
Numpy入门[16]--choose函数实现条件筛选 参考: https://ailearning.apachecn.org/ numpy高级函数操作之--select.choose 使用Jupyt ...
- 重构指南 - 封装条件(Encapsulate Conditional)
封装就是将相关的方法或者属性抽象成为一个对象. 封装的意义: 对外隐藏内部实现,接口不变,内部实现自由修改. 只返回需要的数据和方法. 提供一种方式防止数据被修改. 更好的代码复用. 当代码中包含许多 ...
- 重构——39以多态取代条件表达式(Replace Conditional with Polymorphism)
以多态取代条件表达式(Replace Conditional with Polymorphism) 你手上有个条件表达式,它根据对象类型的不同而选择不同的行为:将这个条件表达式的每个分支放进一个子类内 ...
- Spring系列第20篇:@Conditional通过条件来控制bean的注册
面试阿里p7被问到的问题(当时我只知道第一个): @Conditional是做什么的? @Conditional多个条件是什么逻辑关系? 条件判断在什么时候执行? ConfigurationCondi ...
- windows环境下封装条件wait和signal
linux 环境有提供好的pthread_cond_wait() 和 phread_signal().pthread_broadcast() windows需要自己封装,利用semophore控制线程 ...
- C# 中利用 Conditional 定义条件方法
利用 Conditional 属性,程序员可以定义条件方法.Conditional 属性通过测试条件编译符号来确定适用的条件.当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了 ...
- 平行空间怎么设置32位_每周推荐 | 空间占用减小32%,具有高级功能的16位逻辑封装...
TVSOP48 是一款 48 引脚的封装,比 TSSOP48 减少了 32% 的封装面积,把现有功能压缩进一个更小的封装.TVSOP48 是一款高密度封装,间距为 0.4 毫米,有助于减小电路板尺寸和 ...
- 四、Spring中使用@Conditional按照条件注册Bean
以前其实是写过@Condtional注解的笔记的,这里附上链接: Spring中的@conditional注解 但已经忘记的差不多了,所以今天再重新学习下,可以互补着学习 @Contional:按照一 ...
- @Conditional进行条件判断等
场景,有二个组件TulingAspect 和TulingLog ,我的CustomLog组件是依赖于TulingAspect的组件 应用:自己创建一个CustomCondition的类 实现Condi ...
最新文章
- 量化人类社会交互行为
- 首届MySQL中文用户活动
- linux设备驱动——总线、设备、驱动
- 第五章--加载内核Kernel.bin
- java 基本语法与流程控制_Java基础语法之控制流程
- 【Java】不使用比较运算符构造max()和min()
- Python 实现新冠病毒分布实时追踪
- FPGA时钟激励编写(方法二)
- 图解Android - Android GUI 系统 (1) - 概论
- mybatis都有哪些executor执行器_Mybatis的SqlSession创建过程详解
- python办公实例100例-Python 100例(上)
- LeetCode781森林中的兔子题解
- 无损连接,函数依赖性判定
- Excel 2010 VBA 入门 071 工作表事件之Worksheet_Change
- 【模拟器】华三模拟器HCL安装操作指导
- 《Pro SQL Server Internals, 2nd edition》节选翻译(一)
- matlab封装的模块,matlab模块封装
- 36岁程序员2023年第一天上班被裁
- 关于String s=1.0 转为INT
- WannaCry勒索病毒分析过程**中**(注)
热门文章
- 为什么选择react?为前端开发选择React的六大理由
- php岗位专业技能,PHP简历专业技能怎么写
- mysql -h 日志打印_mysql日志
- mongodb 监控权限_分布式监控系统Zabbix3.4-针对MongoDB性能监控操作笔记
- python的else_Python3 if...elseif...else语句
- python与机器学习(一)图片相关操作
- P1144 最短路计数
- 日本新研究:将光伏组件高温高湿试验速度提高70倍
- mysql替换字段的部分数据
- iostat命令简单使用