考虑两个想要设计“吸引用户”设计的UI设计师。“吸引用户”是一个不客观的概念,仅存在于设计师的脑海中。因此,设计师A可以选择红色,而设计师B可以选择蓝色。设计器A创建的布局与设计器B完全不同,依此类推。
我读到有关SRP(单一责任原则)的知识,我理解的是一种主观分析或对职责的分解,这些职责可能因OO设计者而异。我对吗?换句话说,是否有可能有两个优秀的面向对象的分析器和设计人员针对一个基于SRP原理的系统提出两种不同的设计?
考虑两个想要设计“吸引用户”设计的UI设计师。“吸引用户”是一个不客观的概念,仅存在于设计师的脑海中。因此,设计师A可以选择红色,而设计师B可以选择蓝色。设计器A创建的布局与设计器B完全不同,依此类推。
我读到有关SRP(单一责任原则)的知识,我理解的是一种主观分析或对职责的分解,这些职责可能因OO设计者而异。我对吗?换句话说,是否有可能有两个优秀的面向对象的分析器和设计人员针对一个基于SRP原理的系统提出两种不同的设计?
Answers:
该原则的应用是主观的。但是,“主观”并不等同于美学那样的“偏好”。
有明显的极端情况。用了一个方法,A级,仅有的几行代码,不调用任何其他类,是绝对继SRP。另一方面,具有两种方法的类绝对不遵循SRP ,该类包含通过原始套接字的完整电子邮件实现,而另一种构建GUI形式。
美学是一个糟糕的类比。更好的类比将是众所周知的耦合和内聚的计算机科学概念。这些都不是黑白的,是非。但是,即使有定性元素,也可以测量。如果您向一群经验丰富的开发人员展示针对同一功能的两个独立设计,那么他们将给出相似的读物,说明设计具有更多的耦合和/或凝聚力。
实际上,SRP本质上只是功能凝聚。它说某个模块的各个部分(例如,类)应该组合在一起,因为它们全都有助于执行相同的功能,而没有其他原因。“功能”可能需要解释-有些人可能将其字面解释为单个功能(或方法或过程)声明,其他人可能会退后一步,将功能视为“发送电子邮件”或“播放音乐” ,但仍有很大的回旋余地。 “管理资料”不是有效的功能描述。