Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单一责任原则和项目(Visual Studio/C#)——您如何组织您的项目?_C#_Visual Studio_Single Responsibility Principle - Fatal编程技术网

单一责任原则和项目(Visual Studio/C#)——您如何组织您的项目?

单一责任原则和项目(Visual Studio/C#)——您如何组织您的项目?,c#,visual-studio,single-responsibility-principle,C#,Visual Studio,Single Responsibility Principle,我一直在努力真正理解SRP和SOLID,并完全理解人们为什么应用它。我自己仍在努力掌握SRP的“艺术”。说到这里,我最理解的建议是,“写下你的课程的目的是什么。如果这个句子有单词,但是,除了,那么它做的太多了。所以我可能写了一个叫做“ActiveDirectoryHelper”的课程(我知道,很臭)有CreateComputerObject、FindComputerObject和DeleteComputerObject。我认为这应该分为三个独立的类,不是吗 但更重要的是,如果我虔诚地应用SRP,

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

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

非常感谢

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

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

但更重要的是,如果我虔诚地应用SRP,我的visualstudio/C#project中不会有几十个class.cs文件吗

这是一个令人惊讶的常见问题/论点,你在MS land中经常听到,有些人更喜欢巨大的“上帝类”,并使用代码区域进行组织。大量的类通常是一个很好的迹象。大多数时候,它使你的代码更具可读性、可测试性和组织性。毕竟C#是一种面向对象的语言,所以不要担心创建更多的类

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


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

这是非常主观的,没有正确的答案,还有个人偏好偏见(我希望这个问题对于那些有权力的人来说是没有帮助的).就我个人而言,我试图通过作用域/特定功能使我的类保持小规模,因为这使它们更易于测试;因此,是的,您可以最终得到许多简单/可测试的类,但最终会得到一个复杂的设置(这就是依赖项注入非常有用的地方).所以,当我和C#住在MS land时,我讨厌大型的、上帝级的课程等。我还认为Visual Studio可以帮助你浏览所有的小型课程,所以我对小型课程很在行。然而,一些同龄人认为我的课程太多了。因此,对于那些在VS中练习SRP的人,我的一个主要问题是:你是如何组织你的项目的?“我明白你关于名称空间和文件夹的观点……谢谢你的回答!