在System.Data.Entity
命名空间中有DbFunctions
类。它有近100个函数来处理字符串操作,DateTime计算和统计函数。关于SO有很多SRP问题,所以觉得这是适当的论坛。 Wikipedia
定义SRP如下:
单一责任原则规定每个模块或类别 应该对功能的一部分负责 由软件提供,责任应该完全 由类封装。它的所有服务应该是狭隘对齐的 有责任
在我看来,DbFunctions是违规者。
在定义一个班级的目的时,许多人主张计算" ands"你在定义中使用。不止一个,你可能违反了SRP。根据我的统计,DbFunctions
中至少有3个。我对SRP的理解有缺陷还是太字面?我知道总有边缘情况,但在我看来,这似乎违反了SRP。这肯定不会减少班级的超有用性。
此类是否符合SRP?
答案 0 :(得分:1)
我不认为它违反了SRP。以下是MSDN中给出的定义
提供公共语言运行时(CLR)方法,公开EDM规范函数以在DbContext或ObjectContext LINQ to Entities查询中使用。
上述定义中的责任是公开EDM Canonical函数以在Linq To SQL查询中使用,这是单一责任。