我有一些Java程序,现在我想知道它是否是模块化的,如果它是模块化的,那么模块化到什么程度,因为模块化永远不可能是二进制项,即0或1。我如何确定特定代码模块化到如此程度。我想知道如何使代码更加模块化?
发布于 2009-09-18 12:29:38
模块化的一些基准测试:
有关更多想法,请查看this blurb about modularity和software quality上的这篇文章
至于你对的关注,让你的代码更加模块化首先,你应该问自己上面的问题,获得它们的具体答案,然后看看this。
基本理念是将应用程序分解为尽可能小的代码片段,并在大量易于理解和访问的目录布局中整齐地排列。
应用程序中的每个方法都不能超过处理所需的最小数量。将这些方法组合到越来越多的宏级方法中应该会将您带回您的应用程序。
发布于 2009-09-18 12:32:26
关键点是
concerns
通信
这种模块系统的一个很好的例子是标准的汽车部件,如盘式刹车和汽车音响。当你在造车的时候,你不会想从头开始造汽车音响。你宁可买下它,然后插上电源。你也不希望制动系统影响汽车立体声- or更糟糕的汽车立体声影响制动系统。
为了回答你的问题,“我如何决定特定的代码模块化到这种程度”,我们可以形成问题来测试模块化。您是否可以轻松地将模块替换为其他模块,而不会影响应用程序的其他部分?
XML解析器可以是另一个例子。一旦获得了DOM接口,您实际上并不关心使用哪个XML解析器实现(例如Apache Xerces或JAXP)。
在Java语言中,另一个问题可能是:通过interface**s?**接口可以访问的所有功能。接口很大程度上解决了低耦合问题。
还有,你能用一句话描述你系统中的每个模块吗?例如,汽车音响播放音乐和收音机。盘式制动器可以安全地减速。
(以下是我写给What is component driven development?的内容)
根据维基百科的说法,基于组件的开发是Component-based software engineering (CBSE)的别名。
它是软件工程的一个分支,它的首要任务是在整个给定的软件系统中分离关于广泛可用的功能的关注点。
这有点含糊,所以让我们来看更多细节。
单个组件是封装了一组相关功能(或数据)的软件包或模块。
所有系统进程都放在单独的组件中,因此每个组件中的所有数据和函数在语义上都是相关的(就像类的内容一样)。由于这一原则,人们经常说组件是模块化的和内聚的。
因此,根据这个定义,一个组件可以是任何东西,只要它真的做好了一件事,而且只做了一件事。
关于系统范围的协调,组件通过接口相互通信。..。这一原则导致了称为封装的组件。
因此,这听起来越来越像我们认为好的API或SOA应该是什么样子。
在UML中,所提供的接口由棒棒糖表示,所需的接口由附加在组件外部边缘的开放套接字符号表示。

组件的另一个重要属性是它们是可替换的,因此如果后续组件满足初始组件(通过接口表示)的要求,则一个组件可以被另一个组件替换(在设计时或运行时)。
可重用性是高质量软件组件的重要特征。软件组件的设计和实现应该使得它可以在许多不同的程序中重用。
可替换性和可重用性是使组件成为组件的原因。那么这和面向对象编程有什么不同呢?
面向对象编程(OOP)的思想是,软件应该根据它所代表的实际或想象的对象的心理模型来编写。..。
相比之下,基于组件的软件工程没有做出这样的假设,而是规定应该通过将预制组件粘合在一起来开发软件,就像在电子或机械领域一样。
发布于 2009-09-18 12:38:08
要回答您关于如何使代码更加模块化的特定问题,有几种方法:
https://stackoverflow.com/questions/1444221
复制相似问题