Architecture 软件项目的模块化有多重要
模块化在软件项目中显然很重要,但我想知道人们对模块化的重要性以及其重要性的原因的看法。自从我提出这个问题以来,我显然有自己的想法,但把它想象成一场“共同的头脑风暴”,讨论人们应该将自己的软件项目模块化的原因……我将代码放入不同模块的主要原因:Architecture 软件项目的模块化有多重要,architecture,modularization,Architecture,Modularization,模块化在软件项目中显然很重要,但我想知道人们对模块化的重要性以及其重要性的原因的看法。自从我提出这个问题以来,我显然有自己的想法,但把它想象成一场“共同的头脑风暴”,讨论人们应该将自己的软件项目模块化的原因……我将代码放入不同模块的主要原因: 关注点分离:我觉得,如果将不同级别的类或不同任务的类组织成单独的模块,则更容易限制它们的内部知识。如果内部结构隐藏得很好,那么依赖内部结构会让人感觉更“脏” 更容易维护较小的组件:我通常发现,如果我在一个代码文件较少的项目上工作,那么开发环境的响应性会比
- 关注点分离:我觉得,如果将不同级别的类或不同任务的类组织成单独的模块,则更容易限制它们的内部知识。如果内部结构隐藏得很好,那么依赖内部结构会让人感觉更“脏”
- 更容易维护较小的组件:我通常发现,如果我在一个代码文件较少的项目上工作,那么开发环境的响应性会比项目包含成百上千个文件时更高
- 防止名称空间冲突:正确模块化后,例如在Java中使用名称空间,您可以为相同的功能使用相同的函数名,而不必担心Foo组件中的printout()函数将与Bar组件中的printout()函数冲突
- 安全问题分离:当一个组件踩到另一个组件的脚尖时,可以更容易地将潜在的损坏降至最低。根据使用的技术,您可以限制每个模块在内存中的播放位置
最后,当事情变得更小时,更容易测试和维护。此外,一旦测试只测试应用程序的一小部分,您的测试会更快地指出错误所在 我们人类在一次抓住复杂问题时是有限的。然而,我们有能力将一个复杂的问题分解成(可能是非常大的)数量不太复杂的单个问题,以便解决这个大问题 这从根本上推动了“重用”、“关注点分离”、“更易于维护”等答案
所有这些原因都是正确的,无论是一个人将复杂问题分解成一个个问题来解决,还是一个团队将复杂问题分解成一个个问题来解决。模块化和解耦非常重要,原因有很多,其中一些是:
- 重用:重用专用于特定用途的软件模块要容易得多
- 管理复杂性:处理解耦模块(编写代码、调试、维护等)可以让您专注于某个领域的问题,而不会被应用程序或软件系统的其他方面分散注意力
- 需要一些业务和功能规范
- 并将主要功能分组到应用程序中,同时识别非功能模块和纯技术横向模块
- 计算模块
- dispatcher模块(因为投资组合太大,无法在一台服务器上计算)
- 发射器模块(用于引导所有计算)
- GUI(查看实际情况)
- KPI日志记录
- 异常管理
然而,有了清晰的应用程序体系结构,您就可以开始处理更通用和更横向的模块,同时还可以细化其他更面向业务的模块
它还迫使您定义更多接口,并分析不同模块必须解决的相互通信问题(直接n对n类型学?总线?,…)应该是“分而治之”的一个很好的解释……)+1对我来说,这是模块化(以及封装)的首要重要性。这是一种通过限定解决方案的一小部分范围来减少进行更改所需的工作集的能力,而不必考虑(太多)更大的系统。对于大型系统,我知道我不够聪明,无法把所有这些都记在脑子里!