重构指南 - 封装条件(Encapsulate Conditional)
- 对外隐藏内部实现,接口不变,内部实现自由修改。
- 只返回需要的数据和方法。
- 提供一种方式防止数据被修改。
- 更好的代码复用。
public class RemoteControl{private string[] Functions { get; set; }private string Name { get; set; }private int CreatedYear { get; set; }public string PerformCoolFunction(string buttonPressed){// Determine if we are controlling some extra function// that requires special conditionsif (Functions.Length > 1 && Name == "RCA" && CreatedYear > DateTime.Now.Year - 2)return "doSomething";}}
重构后代码
public class RemoteControl{private string[] Functions { get; set; }private string Name { get; set; }private int CreatedYear { get; set; }private bool HasExtraFunctions{get { return Functions.Length > 1 && Name == "RCA" && CreatedYear > DateTime.Now.Year - 2; }}public string PerformCoolFunction(string buttonPressed){// Determine if we are controlling some extra function// that requires special conditionsif (HasExtraFunctions)return "doSomething";}}
public class RemoteControl{private string[] Functions { get; set; }private int CreatedYear { get; set; }public string PerformCoolFunction(string buttonPressed){// Determine if we are controlling some extra function// that requires special conditionsif (Functions.Length > 1 && buttonPressed== "RCA" && CreatedYear > DateTime.Now.Year - 2)return "doSomething";}}
重构后代码
public class RemoteControl{private string[] Functions { get; set; }private string Name { get; set; }private int CreatedYear { get; set; }private bool HasExtraFunctions(string buttonPressed){get { return Functions.Length > 1 && buttonPressed== "RCA" && CreatedYear > DateTime.Now.Year - 2; }}public string PerformCoolFunction(string buttonPressed){// Determine if we are controlling some extra function// that requires special conditionsif (HasExtraFunctions(buttonPressed))return "doSomething";}}
转载于:https://www.cnblogs.com/hmloo/p/6292441.html
重构指南 - 封装条件(Encapsulate Conditional)相关推荐
- 重构条件-Decompose Conditional分解条件式一
重构条件-Decompose Conditional分解条件式一 1.分解条件式 1.1.使用场景 你有一个复杂的条件(if-then-else)语句.从if.then.else三个段落中分别提炼出独 ...
- CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率
CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率 当场景中有比较复杂的模型时,条件渲染能够加速对复杂模型的渲染. 条件渲染(Conditio ...
- 重构16-Encapsulate Conditional(封装条件)
当代码中充斥着若干条件判断时,代码的真正意图会迷失于这些条件判断之中.这时我喜欢将条件判断提取到一个易于读取的属性或方法(如果有参数)中.重构之前的代码如下: public class RemoteC ...
- 重构——34分解条件表达式(Decompose Conditional)
分解条件表达式(Decompose Conditional) 你有一个复杂的条件语句:从if,then,else三个段落中分别提炼出独立函数 一.动机 1.提高代码可读性 2.突出条件逻辑,更清楚的表 ...
- 代码重构(四):条件表达式重构规则
继续更新有关重构的博客,前三篇是关于类.函数和数据的重构的博客,内容还算比较 充实吧.今天继续更新,本篇博客的主题是关于条件表达式的重构规则.有时候在实现比较复杂的业务逻辑时,各种条件各种嵌套.如果处 ...
- java 按条件注解_Spring 条件注解 @Conditional
Spring 4提供了一个更通用的基于条件的Bean的创建方式,即使用@Conditional注解. 下面的示例将以不同的操作系统作为条件,我们将通过实现Condition接口,并重写其matches ...
- windows环境下封装条件wait和signal
linux 环境有提供好的pthread_cond_wait() 和 phread_signal().pthread_broadcast() windows需要自己封装,利用semophore控制线程 ...
- 工程师必知的代码重构指南
作者 | CATE LAWRENCE 译者 | 冬雨 策划 | 蔡芳芳 本指南将带你了解进行代码重构的好处.可能遇到的挑战.可以采用的工具和最佳实践,以及重构和技术债务之间的区别. 我们都在寻找清理代 ...
- 深入理解条件过滤Conditional
在分析AutoConfigurationImportSelector的源码时,会先扫描spring-autoconfiguration-metadata.properties文件,最后在扫描sprin ...
最新文章
- 2018-3-4 nginx和Tengine 以及高并发的概念
- Ubuntu 修改mysql的存储目录
- Simulink仿真 第八节 积分模块
- Ubuntu16.04LTS安装ROS Kinetic
- pert计算公式期望值_PERT和三点估算技术
- python项目实战:绘制一朵漂亮的玫瑰花
- 微博中的c++议论触发了测试人员的神经
- hdu1556 Color the ball
- apache 配置 中英
- ISAPI_Rewrite
- 什么?都1202年了还不懂k8s和容器的关系?!这份k8s指南快拿走不谢!
- Pytho 常见模块 / 用法备忘录
- 本地repos Mac
- 热销超极本iFunk翼S到底怎么样?
- string.h头文件
- 如何修改计算机软件id号,详解使用软件快手修改ID的操作流程
- 7-6 输出三角形面积和周长 (15分)
- Oracle连接本地超时提示【ORA-12170 TNS 】之解决办法
- 计算一元一次方程Y=kX+b
- 下载了免费的txt电子书,如何用Mac打开?
热门文章
- 计算机无法上网修复工具,网络异常修复工具,连接后无法上网修复方式
- java 深入io_Java高级编程-IO操作深入
- win10 电脑触摸板不能滑动_用好笔记本的触摸板(win10小技巧)
- c++用向量给句子排序_用C ++对向量排序
- python的any函数_Python any()函数
- Java LocalTime
- amplify color_如何使用Amplify监视Nginx
- C++ 11使用thread类多线程编程
- 使用PDF-XChange Editor为PDF文件添加签名(图片+签名)
- Java开发工程师,每个阶段需要掌握什么重点?