|
|
1
6
在系统的分层视图中,它看起来像
对于存储层,“其他信息”应该封装在自己的类中,并且该类应该是处理持久性/检索功能的类(就像我想象的那样
保持层分离的经验法则有时可能会让人感觉很僵化,而且它经常会让人倾向于通过层的混合来添加一个特性——但是为了在系统增长时保持系统的可维护性和清洁性,每当出现这样的设计问题时,我几乎总是主张层分离。在OOP术语中,它表示“强内聚但弱耦合”;但在某种意义上,它比OOP更为基本,因为它也适用于其他编程范式及其混合!-) |
|
|
2
1
似乎是额外的数据
|
|
|
3
1
显然,在类的设计中可能会有一些问题……但如果不知道应用程序的完整体系结构,就很难判断出来。 首先,如果OtherInfo对象与帐户而不是您正在检查的产品相关,那么它将为您的类引入不应该存在的职责。 其次,如果您有一个数据访问层……那么ProductChecker类应该使用数据访问层从数据库中检索数据,而不是直接调用来检索所需的数据。 第三,我不确定getotherinfo方法是否需要公开。它看起来像一些只应该在类内部使用的东西(实际上,如果它从一开始就属于那里的话)。在这种情况下,您也不需要传递accountID(您的类应该在某个地方保存它)。 但是…如果OtherInfo与您正在检查的产品相关,并且您没有真正的数据访问层,那么我可以看到这可能是一个有效的设计。 不过,我还是站在你这边。我不喜欢。 |
|
|
4
0
考虑到一个accountnumber被传递到构造函数中,您不必将它传递给类似的另一个方法。 |
|
|
5
0
几点
|
|
|
6
0
我建议这样做:
我不是领域驱动设计专家,但我相信这就是DDD的意义所在。您可以保持您的逻辑不受数据库问题的影响,将其转移到外部服务/存储库。如果有人纠正了我,我会很高兴的。 |
|
|
7
0
有什么好的。看起来您有一个目标明确的ProductChecker。检查产品。您需要重构或更改此项。如果你不需要的话,你不会的。这是我可能会做的。 为每个帐号创建一个新的类实例“感觉”很笨拙。构造函数参数应该是类正确行为所必需的。它是类的参数,而不是依赖项。它导致临时工在构造函数中做了大量的工作。类的用法应如下所示:
我会很快重新命名以表明它确实有效。
其他一些人提到,您可能需要拆分数据库逻辑。如果你想要快速的单元测试,你就需要这样做。大多数程序都需要单元测试(除非你只是随便玩),如果速度快的话,它们就更好了。当你能把数据库排除在外的时候,它们是快速的。 让我们创建一个表示数据库结果的虚拟对象,并将其传递给一个确定产品是否通过的方法。如果不是为了证明,这将是一个私人的。测试性获胜。假设我想验证一个规则,比如“如果帐号是prime,产品必须是绿色的。”这种单元测试方法在没有复杂基础设施的情况下非常有效。
现在我们需要连接数据库。数据库是一个依赖项,它是类正确运行所必需的。它应该在构造函数中提供。
如果构造器变得非常冗长(可能需要读取配置文件才能找到数据库),请创建一个工厂来为您进行排序。
到目前为止,我还没有使用任何基础设施代码。通常,我们会通过模拟和依赖注入(我使用 rhinomocks 和 autofac )我不想谈这个。如果你已经准备好了,那就更容易了。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |