【发布时间】:2017-03-04 15:23:40
【问题描述】:
我正在尝试一种新的代码结构,我将我所有的大型存储库和工厂拆分为大量较小的类,每个类都有一个单一的职责。除此之外,我使用动词作为类名,因为我认为这是准确描述每个类的含义的最佳方式。
每个类只有一个公共方法(称为“Execute”),但通常有私有方法,有时还有一个带参数的构造函数。
示例:
之前:
class DocumentRepository {
public List<Document> GetDocuments()
public void SaveDocument(Document document)
public Document CopyDocument(int id)
}
之后:
class GetDocuments {
public List<Document> Execute()
}
class SaveDocument {
public void Execute(Document document)
}
class CopyDocument {
public Document Execute(int id)
}
这种结构的一个好处是我更愿意将公共方法的功能拆分为多个私有方法(更易于阅读和管理)。在此之前会增加存储库中的混乱,但现在私有方法包含在它们单独的类中。
我一直读到,类应该有名词作为名称,但是当一个类只有一种用途时,似乎最好用它的作用来命名它。
问题:
这是一个坏主意(分离和命名)?如果是这样,创建这种分离并避免大类的更好方法是什么?
编辑: 应该注意的是,我是从命令查询的角度得出这些(奇怪的)想法的。所以也许将它与那个而不是存储库进行比较是最有意义的。
【问题讨论】:
-
这可能最好放在codereview.stackexchange.com。也就是说,我会说类是名词,方法是动词,但都是意见。
-
我实际上是在一个个人项目中玩弄相同的命名想法,并用谷歌搜索看看其他人是怎么想的。在我的例子中,它不是一个存储库,而是类似的——一个具有单个公共方法
Invoke、许多私有方法和一些依赖项的类。答案说这个命名方案很奇怪。但如果它有助于最好地表达一个班级的目的,也许不要被教条所困并无论如何都要使用它?
标签: c# .net naming-conventions command-query-separation