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     }
  • 相关阅读:
    Linux环境变量文件
    Hadoop的ERROR: Attempting to operate on yarn resourcemanager as root的解决方法
    如何启用WSS3.0的匿名访问?
    Microsoft Windows SharePoint Services 3.0
    在sps页面中在新窗口打开文档
    wss3.0安装时的bug
    使用GROUP BY子句的规则
    8种Nosql数据库系统对比
    django学习
    Python socket编程
  • 原文地址:https://www.cnblogs.com/happyframework/p/2936262.html
Copyright © 2011-2022 走看看