一、使用自定义返回值类型 还是 使用抛异常?
1.构造函数和析构函数中如果出错,肯定只能用异常,因为构造函数和析构函数无返回值。
二、面向对象的方法参数设计——少用自增长的Id
1.纯面向对象的领域分析与建模中领域对象一般没有自增长的整形字段和属性,因此在进行CUDR操作时,方法参数最好不要用自增长
的Id 为参数。至于很多程序为什么采用自增长的Id来作为传入的参数,那是因为受关系数据库的影响太深。这个领域分析和建模根
本不需要考虑用什么用的数据库存储,说不定不用关系数据库呢?,如果用其他类型的数据库或许就不需要这样的自增长Id字段。不
过关系数据库还是目前最成熟的主流技术。本人认为数据库中也应该尽量少用自增长字段。因为某些关联表中的字段就是外键的组合,
单独看关联表表中的数据有效不能真实体现。
2.在领域层coding时 如果为具体合体增加一个子对象,当构造(new)一个子类对象时程序员就可以为自增长Id属性赋值,然而关系
数据库中子表的字段Id是自增长,这是就会引发提一些异常(类似不能显示给Id字段赋值的异常消息)因此领域对象中的自增长Id属
属性最好设置成private类型的字段(推荐不使用自增Id)。这样可以可以在高层就能够对程序员进行约束,进而可以避免一些异常发
生,因此在测试业务对象的构造方法时,应该要设计测试用例测试显示给自增长Id赋值的情况和不给Id赋值的情况。
三、面向对象的方法参数设计——返回强类型对象
在服务层、领域层、数据访问层的方法最好返回强类型对象会列表,让调用者去获取该对象的属性值,如果不这样就有可能为通过一
个传入的参数去写(很)多个方法去返回不同的属性值。
四、软件开发过程管理经验之——进行第0次迭代
当项目的架构在服务器上搭建之后,所有开发人员做同一个代表性模块或用例,这个过程属于第0次迭代,第0次迭代目的是为了让每
个开发人员熟悉了解项目架构。
五、领域驱动设计原则
1.两个类之间的关联类如果能合并则尽量合并。比如在毕业论文管理信息系统(GTMIS)的选题子系统中,学生Student类和课题
Subject类的两个关联类应该设置成一个关联类的随想 然后用一个标识属性去标识某条学生志愿记录是否被教师选定了就可以了。
2.聚合体的跟对象转给外界提供本聚合体的子对象时,一定要传递一个值的拷贝,而不能是指针或引用,如果返回指针或引用,那么
外部对象就可以对返回的指针或引用对象进行修改,当聚合体调用DataAccess层得持久化方法时,更改也会提交。需要注意的是
C#语言和java语言都没有指针或引用,但其内部默认是采用引用或指针。因此在返回子对象时应该在聚合体方法内部new 一个子
对象,然后将值一一赋给new的新对象,最后返回new的对象。
六、聚合体A的子对象能够直接访问聚合体B的根,这个在领域设计中是被允许的。