gpt4 book ai didi

c# - 对本课的建设性批评

转载 作者:太空狗 更新时间:2023-10-30 00:36:35 26 4
gpt4 key购买 nike

我刚刚查看了一些以前看起来像这样的代码

public class ProductChecker
{
// some std stuff
public ProductChecker(int AccountNumber)
{
var account = new AccountPersonalDetails(AccountNumber);
//Get some info from account and populate class fields
}
public bool ProductACriteriaPassed()
{
//return some criteria based on stuff in account class
//but now accessible in private fields
}

}

现在已经添加了一些额外的标准,这些标准需要不在 AccountPersonalDetails 类中的数据

新代码看起来像这样

public class ProductChecker
{
// some std stuff
public ProductChecker(int AccountNumber)
{
var account = new AccountPersonalDetails(AccountNumber);
var otherinfo = getOtherInfo(AccountNumber)
//Get some info from account and populate class fields
}
public bool ProductACriteriaPassed()
{
//return some criteria based on stuff in account class
// but now accessible in private fields and other info
}

public otherinfo getOtherInfo(int AccountNumber)
{
//DIRECT CALL TO DB TO GET OTHERINFO
}

}

我对数据库部分感到困扰,但人们能告诉我为什么这是错误的吗?或者是?

最佳答案

在您系统的分层 View 中,它看起来像 ProductChecker 属于业务规则/业务逻辑层,因此它不应该被用户交互功能“污染”(属于上面层)——这与你的情况密切相关——存储功能(属于下面层) )。

“其他信息”应该封装在它自己的存储层类中,并且该类应该是处理持久化/检索功能的类(就像我想象的那样 AccountPersonalDetails 正在为它自己做东西)。 “个人详细信息”和“其他信息”最好作为单独的类保存还是合并到一个类中,我无法从提供的信息中判断,但应该认真考虑并仔细权衡该选项。

保持层分离的经验法则有时可能会让人觉得僵硬,并且通常很想通过层的混合来简化它以添加功能——但是为了在系统增长时保持系统的可维护性和清洁性,我几乎每当出现这样的设计问题时,总是主张层分离。用 OOP 术语来说,就是“强内聚弱耦合”;但在某种意义上它比 OOP 更基础,因为它也适用于其他编程范例及其混合!-)

关于c# - 对本课的建设性批评,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com