2016-02-19 63 views
1

System.Data.Entity命名空间中有DbFunctions类。它有将近100个处理字符串操作,DateTime计算和统计函数的函数。 SO上有很多SRP问题,所以觉得这是合适的论坛。 Wikipedia定义SRP如下:DbFunctions类是否违反SRP

单责任原则指出每个模块或 类应该具有超过由软件提供的功能 单个部分的责任,和责任应该由类完全 包封。它的所有服务都应该狭义地对准 与责任

在我看来,这DbFunctions是一种违法行为。

定义什么类的目的是很多人主张统计定义中使用的“ands”的数量。不止一个,你可能违反了SRP。据我统计,DbFunctions至少有3个。我对SRP的理解是否有缺陷或过于直接?我知道总是存在边缘案例,但在我看来,这似乎违反了SRP。这当然不会削弱班级的超级用途。

这个类是否符合SRP?

+0

Downvote?请......这个问题没有错。我已经对这个主题进行了大量的思考和研究,并且正在寻找有意义的回应。 –

+0

这个问题确实表明了大量的想法和研究,但是你把它发布在错误的网站上。 SO不是针对特定的编程问题,这不是。 –

+1

@MadPhysicist ...我在哪里发表了各种各样的情绪。对此,有很多基于意见的SRP问题 - 这就是我选择在这里发布的原因。真的,大多数与实体有关的东西都是基于意见的,并且在这个主题上有很多SO帖子。如果SO管理员不同意我的观点,有人可以迁移到相应的论坛吗? –

回答

1

我不认为它违反了SRP。以下是MSDN中给出的定义:

提供公共语言运行库(CLR)方法,该方法公开用于DbContext或ObjectContext LINQ to Entities查询的EDM规范函数。

上述定义中的责任是将EDM Canonical函数公开在Linq To SQL查询中使用,这是单一责任。

+1

那些暴露“相关”功能的熟悉的“经理”类怎么样?相关确定,SRP通常不是。 –

+0

为什么你认为'SOLID'是一个神奇的子弹,所有的软件都应该以100%的合规性来构建?忽略那只是因为你没有看到关系并不意味着它不存在。 –

+1

@MatthewWhited ...我没有透露任何关于100%合规性或SOLID是神奇的子弹。我只是质疑我的理解,还有一些我认为是SRP。 –