"Simple and Stupid" 软件设计的原因
Reasons for a "Simple and Stupid" software design
我目前正在学习软件工程测试。学习要点之一是知道为什么我们应该使用"Simple and Stupid"设计原则。
我知道这对通读别人的代码很有帮助,但是遵循这个原则还有其他重要的原因吗?
所有设计原则都通过影响设计者来最大化所设计系统的理想特性和最小化不良特性。就软件工程而言,这些包括最大化 内聚性 、最小化 耦合 和最小化 复杂性 。 =10=]
Cohesion 是 属性 表示相关的想法属于一起。如果您有一个由笛卡尔坐标 X、Y 和 Z 组成的点,则最好将所有三个值放入同一个集合或对象中。如果您有由极坐标定义的点,它们也属于一起 - 但可能与笛卡尔坐标不在同一个对象中。
耦合是不相关事物相互依赖的属性。一条线取决于两点,但它不应该取决于颜色或所有者或其他任何东西。请注意,如果您用两点定义一条线,则无论这些点是定义为笛卡尔坐标还是极坐标,它仍然是一条线;或具有一个、两个、三个甚至更多轴。松散耦合确保无论您如何指定各个点,线都不会改变。
复杂性 是 属性 代码,用于衡量它包含多少决策。复杂度越高,越难测试;测试越难,它包含错误的可能性就越高。较小的模块需要测试的决策路径较少。
“简单而愚蠢”是一种思考驱动理想设计的属性的方式。简单意味着“高内聚”——不要仅仅因为它可能相关就不断地向一个对象添加东西——确保它们确实属于一起。愚蠢意味着“低复杂性”——不要试图变得聪明,将所有逻辑打包到一个函数中。将您的问题分解为更小的方法,并以可测试的细节对其进行描述。
如果您遵循这些原则,您最终可能会获得更高质量的代码。可读性(正如你上面提到的)只是质量的一个方面(但也是一个重要的方面);正常运作是另一回事;可测试性也是如此。
我目前正在学习软件工程测试。学习要点之一是知道为什么我们应该使用"Simple and Stupid"设计原则。
我知道这对通读别人的代码很有帮助,但是遵循这个原则还有其他重要的原因吗?
所有设计原则都通过影响设计者来最大化所设计系统的理想特性和最小化不良特性。就软件工程而言,这些包括最大化 内聚性 、最小化 耦合 和最小化 复杂性 。 =10=]
Cohesion 是 属性 表示相关的想法属于一起。如果您有一个由笛卡尔坐标 X、Y 和 Z 组成的点,则最好将所有三个值放入同一个集合或对象中。如果您有由极坐标定义的点,它们也属于一起 - 但可能与笛卡尔坐标不在同一个对象中。
耦合是不相关事物相互依赖的属性。一条线取决于两点,但它不应该取决于颜色或所有者或其他任何东西。请注意,如果您用两点定义一条线,则无论这些点是定义为笛卡尔坐标还是极坐标,它仍然是一条线;或具有一个、两个、三个甚至更多轴。松散耦合确保无论您如何指定各个点,线都不会改变。
复杂性 是 属性 代码,用于衡量它包含多少决策。复杂度越高,越难测试;测试越难,它包含错误的可能性就越高。较小的模块需要测试的决策路径较少。
“简单而愚蠢”是一种思考驱动理想设计的属性的方式。简单意味着“高内聚”——不要仅仅因为它可能相关就不断地向一个对象添加东西——确保它们确实属于一起。愚蠢意味着“低复杂性”——不要试图变得聪明,将所有逻辑打包到一个函数中。将您的问题分解为更小的方法,并以可测试的细节对其进行描述。
如果您遵循这些原则,您最终可能会获得更高质量的代码。可读性(正如你上面提到的)只是质量的一个方面(但也是一个重要的方面);正常运作是另一回事;可测试性也是如此。