首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使代码模块化?

如何使代码模块化?
EN

Stack Overflow用户
提问于 2009-09-18 12:20:44
回答 10查看 41.8K关注 0票数 26

我有一些Java程序,现在我想知道它是否是模块化的,如果它是模块化的,那么模块化到什么程度,因为模块化永远不可能是二进制项,即0或1。我如何确定特定代码模块化到如此程度。我想知道如何使代码更加模块化?

EN

回答 10

Stack Overflow用户

发布于 2009-09-18 12:29:38

模块化的一些基准测试:

  1. 执行特定任务需要执行多少次?
  2. 当您更改程序的某些部分时,您需要执行多少操作?
  3. 文件E211是否很小且易于浏览?< code >H212
  4. C14是否在需要时充分且独立地执行?
  5. 您的代码是否具有最低限度的灾难性?当你只删除一个函数或变量时,所有的地狱崩溃都会失败吗?当你重新命名一个类的时候,你会得到20多个错误吗?(为了检查这一点,你可以实现一个堆栈机制来跟踪你的中的所有跳跃,这是自然语言使用的代码?(即模块和它们的子组件代表了更多的真实世界的对象,而不太关心净源文件的大小)。

有关更多想法,请查看this blurb about modularitysoftware quality上的这篇文章

至于你对的关注,让你的代码更加模块化首先,你应该问自己上面的问题,获得它们的具体答案,然后看看this

基本理念是将应用程序分解为尽可能小的代码片段,并在大量易于理解和访问的目录布局中整齐地排列。

应用程序中的每个方法都不能超过处理所需的最小数量。将这些方法组合到越来越多的宏级方法中应该会将您带回您的应用程序。

票数 44
EN

Stack Overflow用户

发布于 2009-09-18 12:32:26

关键点是

concerns

  • Cohesion

  • Encapsulation的
  • 分离(通过interface)
  • Substitutability
  • Reusability

通信

这种模块系统的一个很好的例子是标准的汽车部件,如盘式刹车和汽车音响。当你在造车的时候,你不会想从头开始造汽车音响。你宁可买下它,然后插上电源。你也不希望制动系统影响汽车立体声- or更糟糕的汽车立体声影响制动系统。

为了回答你的问题,“我如何决定特定的代码模块化到这种程度”,我们可以形成问题来测试模块化。您是否可以轻松地将模块替换为其他模块,而不会影响应用程序的其他部分?

XML解析器可以是另一个例子。一旦获得了DOM接口,您实际上并不关心使用哪个XML解析器实现(例如Apache Xerces或JAXP)。

在Java语言中,另一个问题可能是:通过interface**s?**接口可以访问的所有功能。接口很大程度上解决了低耦合问题。

还有,你能用一句话描述你系统中的每个模块吗?例如,汽车音响播放音乐和收音机。盘式制动器可以安全地减速。

(以下是我写给What is component driven development?的内容)

根据维基百科的说法,基于组件的开发是Component-based software engineering (CBSE)的别名。

它是软件工程的一个分支,它的首要任务是在整个给定的软件系统中分离关于广泛可用的功能的关注点。

这有点含糊,所以让我们来看更多细节。

单个组件是封装了一组相关功能(或数据)的软件包或模块。

所有系统进程都放在单独的组件中,因此每个组件中的所有数据和函数在语义上都是相关的(就像类的内容一样)。由于这一原则,人们经常说组件是模块化的和内聚的。

因此,根据这个定义,一个组件可以是任何东西,只要它真的做好了一件事,而且只做了一件事。

关于系统范围的协调,组件通过接口相互通信。..。这一原则导致了称为封装的组件。

因此,这听起来越来越像我们认为好的API或SOA应该是什么样子。

在UML中,所提供的接口由棒棒糖表示,所需的接口由附加在组件外部边缘的开放套接字符号表示。

组件的另一个重要属性是它们是可替换的,因此如果后续组件满足初始组件(通过接口表示)的要求,则一个组件可以被另一个组件替换(在设计时或运行时)。

可重用性是高质量软件组件的重要特征。软件组件的设计和实现应该使得它可以在许多不同的程序中重用。

可替换性和可重用性是使组件成为组件的原因。那么这和面向对象编程有什么不同呢?

面向对象编程(OOP)的思想是,软件应该根据它所代表的实际或想象的对象的心理模型来编写。..。

相比之下,基于组件的软件工程没有做出这样的假设,而是规定应该通过将预制组件粘合在一起来开发软件,就像在电子或机械领域一样。

票数 26
EN

Stack Overflow用户

发布于 2009-09-18 12:38:08

要回答您关于如何使代码更加模块化的特定问题,有几种方法:

  • 模块化最好的工具之一就是发现代码重用。如果您发现您的代码在不止一处执行完全相同(或非常相似)的事情,那么它是模块化away.
  • Determine的一个很好的候选者,这些逻辑片段可以独立,在某种意义上,其他逻辑将使用它们,而无需知道它们是如何构建的。这在某种程度上类似于您在OO设计中所要做的,尽管模块/组件不一定需要与OO中的建模对象相对应。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1444221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档