理解“偶然内聚”

链接:

  理解“偶然内聚”

 理解“逻辑内聚”

 理解“时间内聚”

 理解“过程内聚”

 理解“通信内聚”

 理解“顺序内聚”

 理解“功能内聚”

 

偶然内聚(Coincidental Cohesion): 也称为“巧合内聚”,是模块内聚性的一种最低形式。在偶然内聚的模块中,各个元素之间几乎没有明显的逻辑关系或功能关联,它们只是被偶然地组合在一起。这种模块通常包含一些看似无关的功能或代码片段,仅仅是因为它们在某些情况下需要一起执行。


偶然内聚的特点:

1.缺乏逻辑联系:模块中的各个功能或代码片段之间没有明显的逻辑关系或功能关联。

2.低内聚度:由于模块内部的功能不相关,导致模块的内聚度非常低。

3.难以维护和扩展:模块内的功能杂乱无章,增加了理解和维护的难度,也不利于未来的扩展和重构。


偶然内聚的问题:

1.低可读性:由于模块内部的功能不相关,代码的可读性和可理解性较差,开发人员很难快速理解模块的作用。

2.高维护成本:当需要修改某个功能时,由于模块内部的功能不相关,开发人员可能需要仔细检查整个模块,以确保不会引入不必要的副作用。

3.脆弱性:由于模块内部的功能不相关,任何对模块的修改都可能导致其他不相关的部分出现问题,增加了系统的脆弱性。

4.难以重用:由于模块内部的功能不相关,很难将模块中的某个功能单独提取出来进行重用。


举例说明偶然内聚

假设我们正在开发一个简单的应用程序,其中有一个模块 MiscellaneousFunctions 被设计用来处理各种不同的任务,例如计算订单总价、发送电子邮件通知和生成随机数。

public class MiscellaneousFunctions
{

    // 计算订单总价
    public double calculateOrderTotal(double itemPrice, int quantity)
    {
        return itemPrice * quantity;
    }

    // 发送电子邮件通知
    public void sendEmailNotification(String recipient, String message)
    {
        // 假设这里有一些发送邮件的逻辑
        System.out.println("Sending email to " + recipient + ": " + message);
    }

    // 生成随机数
    public int generateRandomNumber(int min, int max)
    {
        return (int)(Math.random() * (max - min + 1)) + min;
    }
}

 

在这个例子中,MiscellaneousFunctions 类包含了三个完全不相关的功能:

  • 计算订单总价
  • 发送电子邮件通知
  • 生成随机数

这些功能之间没有任何逻辑上的联系,仅仅是被偶然地组合在一个类中。这就是典型的偶然内聚,因为这些功能并没有共同的目标或主题。

改进方案:提高模块的内聚性

为了提高模块的内聚性,可以采用以下几种策略:

  1. 单一职责原则:每个模块应该只负责一个明确的任务或功能。
  2. 分离功能:将不相关的功能拆分到不同的模块中,使每个模块专注于特定的任务。
  3. 封装相关功能:将相关的功能封装在一起,形成高内聚的模块。

改进后的示例代码

我们可以将上述不相关的功能拆分成独立的模块,每个模块只负责一个明确的任务。
 

public class OrderProcessor
{
    public double calculateOrderTotal(double itemPrice, int quantity)
    {
        return itemPrice * quantity;
    }
}

// 邮件通知模块
public class EmailNotifier
{
    public void sendEmailNotification(String recipient, String message)
    {
        // 假设这里有一些发送邮件的逻辑
        System.out.println("Sending email to " + recipient + ": " + message);
    }
}

// 随机数生成模块
public class RandomNumberGenerator
{
    public int generateRandomNumber(int min, int max)
    {
        return (int)(Math.random() * (max - min + 1)) + min;
    }
}

改进后的分析:

单一职责原则

  • 每个模块现在只负责一个明确的任务:

                OrderProcessor 负责订单处理

                EmailNotifier 负责发送邮件通知

                RandomNumberGenerator 负责生成随机数

  • 这符合单一职责原则,使得每个模块更加专注和清晰。

提高可读性和可维护性

  • 通过将不相关的功能拆分到不同的模块中,代码的可读性和可维护性得到了显著提升。
  • 开发人员可以更容易地理解和修改每个模块的功能。

降低脆弱性:

  • 由于每个模块只负责一个明确的任务,修改其中一个模块不会影响到其他模块,降低了系统的脆弱性。

便于重用:

  • 现在每个模块都可以独立使用,便于在其他地方重用。例如,EmailNotifier 可以在其他需要发送邮件通知的地方直接使用,而不需要依赖于其他不相关的功能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值