代码之家  ›  专栏  ›  技术社区  ›  Rob Wells

软件项目的模块化有多重要

  •  9
  • Rob Wells  · 技术社区  · 5 年前

    模块化在软件项目中显然很重要,但我想知道人们对它的看法 怎样 重要的是什么 理由 这很重要。自从我提出这个问题以来,我显然有自己的想法,但把它想象成一场“共同的头脑风暴”,讨论人们应该将自己的软件项目模块化的原因。。。

    5 回复  |  直到 15 年前
        1
  •  5
  •   Eric J.    15 年前

    我们人类在一次抓住复杂问题时是有限的。然而,我们有能力将一个复杂的问题分解成(可能是非常大的)数量不太复杂的单个问题,以便解决这个大问题。

    这从根本上推动了“重用”、“关注点分离”、“更易于维护”等答案。

    所有这些原因都是正确的,无论是一个人分解一个复杂的问题来逐个解决,还是一个团队分解它来分配复杂性。

        2
  •  4
  •   Samuel Carrijo    15 年前

    我认为其中一个主要方面是 重新使用 .当你以模块化的方式构建东西时,几乎不会有这样的事情:“哦,我以前已经做过了,但要使用它,我还必须获得这个和这个功能,这与我的应用程序完全无关。”。

    而且 这更容易理解。 我不能同时在脑子里想很多事情。当代码是模块化的时,就更容易建立一个有意义的“区域”。一旦这个区域变得很小,我就可以把它理解为一个整体,而不是它的一部分。

    最后,当事情变小时, 它更容易测试和维护。 此外,一旦测试只测试应用程序的一小部分,您的测试就会更快地指出错误所在。

        3
  •  2
  •   Fredrik Mörk    15 年前

    我将代码放入不同模块的主要原因:

    • 关注点分离 :我觉得如果把不同的课程组织成不同的模块,那么就更容易限制对不同级别或不同任务的课程内部知识的了解。如果内部隐藏得很好,那么依赖它们会让人感觉更“脏”。
    • 更容易维护较小的组件 :与包含成百上千个文件的项目相比,如果我在一个代码文件较少的项目上工作,我通常会发现开发环境的响应性更强。
    • 防止名称空间冲突 :当适当模块化时,例如在Java中使用名称空间,您可以为相同的功能使用相同的函数名,而不必担心Foo组件中的printout()函数会与Bar组件中的printout()函数冲突。
    • 安全问题的分离 :当一个部件踩到另一个部件的脚趾时,可以更容易地将潜在损坏降至最低。根据使用的技术,您可以限制每个模块在内存中的播放位置。
        4
  •  1
  •   Kariem Ali    15 年前

    模块化和解耦非常重要,原因有很多,其中一些是:

    • 重用:重用专用于特定用途的软件模块要容易得多
    • 管理复杂性:处理解耦模块(编写代码、调试、维护等)可以让你专注于某个领域的问题,而不会被应用程序或软件系统的其他方面分散注意力。
        5
  •  0
  •   Community T.Woody    7 年前

    它也可以被视为一项基本的社会活动 Application Architecture 其中:

    • 需要一些业务和功能规范
    • 并将主要功能分组到应用程序中,同时识别非功能模块和纯技术横向模块

    这就是为什么“金融投资组合计算”实际上将分为:

    • 计算模块
    • dispatcher模块(因为投资组合太大,无法在一台服务器上计算)
    • 发射器模块(用于引导所有计算)
    • GUI(查看实际情况)

    加上几个横向的:

    • KPI日志记录
    • 异常管理

    将这种功能需求视为一个大型单片模块将迫使开发人员将所有子例程按顺序作为一个all来实现。
    然而,有了清晰的应用程序体系结构,您可以开始处理更通用和更横向的模块,同时仍可以细化其他更面向业务的模块。

    它还迫使您定义更多接口,并分析不同模块必须解决的相互通信问题(直接n-to-n类型学?总线?,…)