1
30
它可以归结为您所建模的内容。我已经做了一些广泛的写作,并提出了坚实的原则,我特别针对你的问题在我的讨论单一责任。 以下内容首次出现在2010年1月/2月的《代码》杂志上,可在以下网站上获得: "S.O.L.I.D. Software Development, One Step at a Time"
|
2
4
我倾向于用业务需求的“变化速度”来思考,而不是“变化的原因”。 在一起 不管他们能否改变。 差别很微妙,但对我有帮助。让我们考虑一下这个例子。 wikipedia 关于报告引擎:
但我知道这是对SRP的个人解释。 另外,我喜欢的第二种技巧是:“用一句话描述你的班级”。它通常帮助我确定是否有明确的责任。 |
3
4
我不认为将两个数字相加这样的任务视为一种责任。责任有不同的形状和大小,但它们肯定应该被视为比执行单一职能更大的东西。 为了更好地理解这一点,明确区分类负责什么和方法做什么可能是有帮助的。一个方法应该“只做一件事”(例如,添加两个数字,尽管在大多数情况下,“+”是一个已经做了这件事的方法),而一个类应该向它的使用者呈现一个明确的“责任”。它的责任远高于一种方法。 像Repository这样的类有一个明确而独特的职责。它有多种方法,如Save和Load,但明确负责为Person实体提供持久性支持。一个类还可以协调和/或抽象依赖类的职责,再次将其作为单一职责呈现给其他消费类。 底线是,如果SRP的应用导致了单个方法类,而这些方法类的全部目的似乎只是将该方法的功能包装在一个类中,那么SRP就没有得到正确的应用。 |
4
3
我使用的一个简单的经验法则是:责任的级别或粒度应该与所讨论的“实体”的级别或粒度相匹配。显然,方法的用途总是比类、服务或组件的用途更精确。
|
5
3
@德里克·贝利:很好的解释
对于这种情况,如果通过将模糊类的责任划分为不同的类,然后衡量由于这种划分而产生的新的行为和结构关系的影响来分析模糊类的行为,这可能会很有帮助。 一旦分拆完成,保留分拆的责任或将其重新合并为单一责任的理由立即变得显而易见。
但我对“客观地定义阶级责任”的探索仍在继续。 |
6
2
我不同意克里斯·尼古拉上面说的“一个类应该向它的消费者提出一个明确的”责任” 我认为SRP是关于在类内有一个好的设计,而不是类的客户。 对我来说,责任是什么还不是很清楚,而证明这个概念产生的问题的数量。 或
引出一个问题:极限在哪里?最后,任何有两个公共方法的类都有两个改变的理由,不是吗?
例如:
意见是好的 |
Schadre · C-plus编码错误 2 年前 |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
amirreza870 · Python OOP-更改类文本 2 年前 |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |