【发布时间】:2009-08-11 03:56:47
【问题描述】:
模块化显然在软件项目中很重要,但我想知道人们对如何重要以及为什么原因它很重要的看法。自从我提出这个问题以来,我显然已经有了自己的想法,但把它想象成一场关于应该模块化软件项目的原因的“共同头脑风暴”......
【问题讨论】:
-
应该是社区维基
标签: architecture modularization
模块化显然在软件项目中很重要,但我想知道人们对如何重要以及为什么原因它很重要的看法。自从我提出这个问题以来,我显然已经有了自己的想法,但把它想象成一场关于应该模块化软件项目的原因的“共同头脑风暴”......
【问题讨论】:
标签: architecture modularization
在一次处理复杂问题方面,我们人类是有限的。然而,我们有能力将一个复杂的问题分解为(可能非常大)数量不太复杂的单个问题,以便解决大问题。
这从根本上推动了诸如“重用”、“关注点分离”、“更易于维护”之类的答案。
所有这些原因都是正确的,无论是一个人分解一个复杂的问题以逐个解决,还是一组人分解它以分散复杂性。
【讨论】:
我认为主要方面之一是重用。当您以模块化方式构建事物时,几乎没有这样的事情:“哦,我以前已经做过,但是要使用它,我还必须获得这个和这个功能,这与我的应用程序完全无关”。
另外,它更容易理解。我不能同时在脑海中记住很多事情。当代码是模块化的时,就更容易建立一个对自身有意义的事物的“区域”。而一旦这个区域变得很小,我可以将其理解为整体,而不是部分。
最后,当事情变得更小时,更容易测试和维护。此外,您的测试可以更快地指出错误所在,因为它们只测试应用程序的一小部分。
【讨论】:
我将代码放入不同模块的主要原因:
【讨论】:
模块化和解耦很重要,原因有很多,其中一些是:
【讨论】:
也可以看成Application Architecture的一项基本活动:
这就是为什么“金融投资组合计算”实际上会分为:
加上几个横向的:
将这种功能需求视为一个大的单体模块将迫使开发人员将所有子例程按顺序实现。
而有了清晰的应用程序架构,您就可以开始着手处理更通用和横向的模块,同时仍然可以改进其他更面向业务的模块。
它还迫使您定义更多接口,并分析您的不同模块必须解决的相互通信问题(直接 n 对 n 类型?总线?,...)
【讨论】: