1

我一直在努力真正理解 SRP 和 SOLID,并完全理解人们为什么应用它。我还在努力自己掌握 SRP 的“艺术”。进入它,我最理解的建议是,“写下你上课的目的是什么。如果句子有单词and,但是,除了,那么它做的太多了。所以我可能写了一个名为“ActiveDirectoryHelper”的类”(我知道,很臭)有 CreateComputerObject、FindComputerObject 和 DeleteComputerObject。我认为这应该分成三个独立的类,不是吗?

但更重要的是,如果我虔诚地应用 SRP,我的 Visual Studio/C# 项目中不会得到几十个类 .cs 文件吗?如果是这样,如果它必须是这样的话,你如何组织你的项目?

非常感谢

4

1 回答 1

2

所以我可能编写了一个名为“ActiveDirectoryHelper”的类(我知道很臭),它有 CreateComputerObject、FindComputerObject 和 DeleteComputerObject。我认为这应该分为三个独立的类,不是吗?

根据 SRP 类应该只有一个改变的理由。例如,如果您预计在某些时候您希望更改 ComputerObject 的创建逻辑,并且此更改不会影响 Find* 和 Delete* 方法,您应该将 CreateComputerObject 提取到一个单独的类:ComputerObjectFactory。

但更重要的是,如果我虔诚地应用 SRP,我的 Visual Studio/C# 项目中不会得到几十个类 .cs 文件吗?

这是您在 MS 领域听到的一个令人惊讶的常见问题/争论,其中一些人更喜欢巨大的“神级”并使用代码区域进行组织。大量的课程通常是一个非常好的迹象。大多数情况下,它使您的代码更具可读性、可测试性和组织性。毕竟 C# 是一种面向对象的语言,所以不要害怕创建更多的类。

如果是这样,如果它必须是这样的话,你如何组织你的项目?

例如使用命名空间和文件夹?

于 2012-02-24T02:32:06.183 回答