zoukankan      html  css  js  c++  java
  • DDD:将概念显式化 之 验证规约

     刚开始的代码

     1     class 将概念显式化1
     2     {
     3         public void 请假(Guid employeeId, DateTime startDate, DateTime endDate)
     4         {
     5             var 剩余天数 = 获取员工可以请假的剩余天数(employeeId);
     6             var 请假天数 = (endDate - startDate).Days;
     7 
     8             if (请假天数 > 剩余天数)
     9             {
    10                 //抛出请假异常
    11             }
    12 
    13             //处理正常的请假逻辑   
    14         }
    15 
    16         private int 获取员工可以请假的剩余天数(Guid employeeId)
    17         {
    18             return 10;
    19         }
    20     }

    进一步重构

     1 class 将概念显式化2
     2     {
     3         public void 请假(Guid employeeId, DateTime startDate, DateTime endDate)
     4         {
     5             if (!员工是否满足请假条件(employeeId, startDate, endDate))
     6             {
     7                 //抛出请假异常
     8             }
     9 
    10             //处理正常的请假逻辑   
    11         }
    12 
    13         private bool 员工是否满足请假条件(Guid employeeId, DateTime startDate, DateTime endDate)
    14         {
    15             var 剩余天数 = 获取员工可以请假的剩余天数(employeeId);
    16             var 请假天数 = (endDate - startDate).Days;
    17 
    18             return 请假天数 <= 剩余天数;
    19         }
    20 
    21         private int 获取员工可以请假的剩余天数(Guid employeeId)
    22         {
    23             return 10;
    24         }
    25     }

    继续重构

     1     class 将概念显式化3
     2     {
     3         public void 请假(员工请假规约 规约)
     4         {
     5             if (!规约.是否满足())
     6             {
     7                 //抛出请假异常
     8             }
     9 
    10             //处理正常的请假逻辑   
    11         }
    12     }
    13 
    14     class 员工请假规约
    15     {
    16         private Guid employeeId;
    17         private DateTime startDate;
    18         private DateTime endDate;
    19 
    20         public 员工请假规约(Guid employeeId, DateTime startDate, DateTime endDate)
    21         {
    22             this.employeeId = employeeId;
    23             this.startDate = startDate;
    24             this.endDate = endDate;
    25         }
    26 
    27         public bool 是否满足()
    28         {
    29             var 剩余天数 = 获取员工可以请假的剩余天数(employeeId);
    30             var 请假天数 = (endDate - startDate).Days;
    31 
    32             return 请假天数 <= 剩余天数;
    33         }
    34 
    35         private int 获取员工可以请假的剩余天数(Guid employeeId)
    36         {
    37             return 10;
    38         }
    39     }
  • 相关阅读:
    进程间通信小结
    菜鸡和菜猫进行了一场Py交易
    菜鸡开始接触一些基本的算法逆向了
    菜鸡学逆向学得头皮发麻,终于它拿到了一段源代码
    静态分析-Windows找密码
    逆向-完成地址随机化关闭
    QSortFilterProxyModel 的过滤 排序
    linux命令2
    linux 命令1
    error c2059 c3905 c2148 c2238
  • 原文地址:https://www.cnblogs.com/happyframework/p/2936262.html
Copyright © 2011-2022 走看看