可组合性和可分解性之间的区别
Difference between Composability and Decomposability
我一直在网上寻找关于两者之间差异的简单解释。
我理解组合是 "bottom-up" 设计,而分解是 "top-down" 设计。
但是,除此之外 - 还有其他区别吗?
如果一个程序实现了 "composability" 原则,它是否也必须实现 "decomposability" 原则,反之亦然?
这两者如何导致不同的设计是显而易见的,但总而言之,从不同的角度来看,它们似乎代表了完全相同的事物。
非常感谢您的澄清。
干杯!
一些参考链接:
正如您提供的第一个 link 所示,这两种方法并非不兼容。您只需要知道何时使用一个或另一个。
根据我的经验,当您开始设计时,自上而下的设计是一种很好的方法,因为您需要发现您的系统、了解需求并使某些东西快速运行。随着您添加越来越多的功能,特定的职责开始出现,这就是需要分解问题的地方。这将防止将代码从一个功能复制到另一个功能,并减少编写新功能所需的工作量。
在一种方法或另一种方法之间进行选择只是找出在适当时间做出正确设计决策的问题。如果你觉得一个问题的某些方面还不清楚,没有理由去分解它。等到你的模块迫切需要模块化(例如,很难理解你前几天写的东西是个好兆头,重复的代码也是如此)。
这是否回答了您的问题?
我一直在网上寻找关于两者之间差异的简单解释。 我理解组合是 "bottom-up" 设计,而分解是 "top-down" 设计。 但是,除此之外 - 还有其他区别吗? 如果一个程序实现了 "composability" 原则,它是否也必须实现 "decomposability" 原则,反之亦然?
这两者如何导致不同的设计是显而易见的,但总而言之,从不同的角度来看,它们似乎代表了完全相同的事物。
非常感谢您的澄清。 干杯!
一些参考链接:
正如您提供的第一个 link 所示,这两种方法并非不兼容。您只需要知道何时使用一个或另一个。
根据我的经验,当您开始设计时,自上而下的设计是一种很好的方法,因为您需要发现您的系统、了解需求并使某些东西快速运行。随着您添加越来越多的功能,特定的职责开始出现,这就是需要分解问题的地方。这将防止将代码从一个功能复制到另一个功能,并减少编写新功能所需的工作量。
在一种方法或另一种方法之间进行选择只是找出在适当时间做出正确设计决策的问题。如果你觉得一个问题的某些方面还不清楚,没有理由去分解它。等到你的模块迫切需要模块化(例如,很难理解你前几天写的东西是个好兆头,重复的代码也是如此)。
这是否回答了您的问题?