zoukankan      html  css  js  c++  java
  • 31天重构指南之十六:封装条件

    有时当我们的条件关系比较复杂时,代码的可读性会比较差,所以这时我们应该根据条件表达式是否需要参数将条件表达式提取成可读性更好的属性或是方法,如果条件表达式不需要参数则可以提取成属性,如果条件表达式需要参数则可以提取成方法。下面是我们来看一段重构前的代码:

         1: public class RemoteControl

       2: {
       3:     private string[] Functions { get; set; }
       4:     private string Name { get; set; }
       5:     private int CreatedYear { get; set; }
       6:  
       7:     public string PerformCoolFunction(string buttonPressed)
       8:     {
       9:         // Determine if we are controlling some extra function
      10:         // that requires special conditions
      11:         if (Functions.Length > 1 && Name == "RCA" && CreatedYear > DateTime.Now.Year - 2)
      12:             return "doSomething";
      13:     }
      14: }

    对上面的代码进行封装条件重构,重构后的代码如下:

       1: public class RemoteControl
       2: {
       3:     private string[] Functions { get; set; }
       4:     private string Name { get; set; }
       5:     private int CreatedYear { get; set; }
       6:  
       7:     private bool HasExtraFunctions
       8:     {
       9:         get { return Functions.Length > 1 && Name == "RCA" && CreatedYear > DateTime.Now.Year - 2; }
      10:     }
      11:  
      12:     public string PerformCoolFunction(string buttonPressed)
      13:     {
      14:         // Determine if we are controlling some extra function
      15:         // that requires special conditions
      16:         if (HasExtraFunctions)
      17:             return "doSomething";
      18:     }
      19: }
     

    原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/16/refactoring-day-16-encapsulate-conditional.aspx

  • 相关阅读:
    windows下安装redis
    十五oracle 触发器
    Flask 学习 六 大型程序结构
    Flask 学习 五 电子邮件
    Flask 学习 四 数据库
    Flask学习 三 web表单
    Flask学习 二 模板
    Flask学习 一 基本结构
    Python操作Redis
    Python操作MySQL
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/1581533.html
Copyright © 2011-2022 走看看