-
-
-
- 内聚
-
-
内聚指的的一个模块各组成成分的紧密程度。LCOM4通俗的说就一个类的成员变量和成员函数可以分为几组,以下两种情况之一分为一组:一、函数间存在调用关系。二、两个或更多函数操作同一个成员变量。此值最好是1。
-
-
-
-
- 偶然内聚、逻辑内聚
-
-
-
前者看起来没联系,实际也没联系;后者看起来有联系,实际没联系。这种情况很常见,尤其在基础库:一、某个读取配置类,有三个函数从txt读取配置,从ini读取配置,从json文件读取配置。系统最初从txt读取配置,后来改成ini,最后改成json。解决方法:删除不同的两个函数。二、某CAD二次开发扩展库,有个图层类,有三个函数:增加图层、删除图层、获取指定图层实体。几乎没有功能同时调用这三个函数。基础库都是这样,无需修改。
-
-
-
-
- 时间内聚
-
-
-
同一时间执行,如:初始化、结束、某个事件。如:某系统启动时需要增加菜单、清理备份、连接数据库。于是增加启动类,三个函数分别对应增加菜单、清理备份、连接数据库。解决方法:如果代码少,就这样;代码多,三个函数升级成三个类。
-
-
-
-
- 过程内聚
-
-
-
按一定步骤完成多个相关功能。如:某类有4个函数:从文件读取配置、从服务端读配置、运算、输出结果。网络版调用顺序为:从服务端读取配置、运算、输出结果;单机版调用顺序为:从本地读取配置、运算、输出界面。内聚性已经可以接受,当然也可进一步优化:读取文件和从服务端读取数据的基础功能统一成类派生于IRead接口,读取配置只和IRead交互。
-
-
-
-
- 通信内聚
-
-
-
所有成员都操作同一数据集。比如:某个类对应数据库一个表的增删查改。
-
-
-
-
- 顺序内聚(信息内聚)
-
-
-
所有成员都与一个功能密切相关,且一个函数的输出是另一个的输入。某CAD二次开发模块的寻找矩形类,有如下几个函数:一、收集line、pline实体。二、将line和pline转为数学直线。三、从直线中寻找水平平行线。 四、依次计算各水平线是否有对应的垂直线。
-
-
-
-
- 功能内聚
-
-
-
所有成员都是完成某单一功能所必须的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~