- 功能内聚
最强的内聚性,一个子程序只完成一项操作,例如sin() min(),前提是子程序所执行的操作与其名字相符,如果它还做了其他的事情,就不够内聚,并且其名字也是有问题的。
- 顺序内聚
某个程序里顺序执行一系列操作,后一个操作必须在前一个操作完成后才能正确执行,例如:操作1:根据ID取名称,判断名称是否正确。
操作2:将名字转成小写。
void print_name(id)
{
const char* name = get_name(id);
if (name == NULL){
//
}
tolower(name);
}
- 通信内聚
某个程序内的不同操作共用了相同的数据,例如:更新某个数据时,先查找是否存在,然后再执行插入操作,两个操作都用到相同的参数:
void update_id(int id)
{
bool is_exist = find(id);
if (is_exist){
//
}
insert(id);
}
- 临时内聚
某个程序含有一些需要的执行的时候才放到一起的操作。例如初始化函数:startup()
{
以下操作之间没有联系,但是程序启动时需要都执行:
init_id_list();//使用子程序完成操作,而不是将繁琐的初始化代码写在这里
inti_error_list();
...
}
- 过程内聚
指一个子程序中的操作按特定的顺序进行,这些操作原本并不需要关联到一起,只是因为人为的赋予特定的顺序。 - 逻辑内聚
指若干操作被放到同一个程序中,通过传入的控制标识选择执行其中的一项操作。这是不良的内聚。例如下面的读取函数:read_data(int type)
{
switch(type){
case 1:{
// 一堆读取操作
}
break;
case 2:{
// 一堆读取操作
}
break;
...
default:
break;
}
}
但是如果程序只是由一堆if或case和调用其他子程序的语句组成,这种逻辑内聚也是很好的。例如:事件处理器。
- 巧合内聚
指程序中各个操作之间没有任何联系。这种就是混乱的内聚性。
时间: 2024-10-05 10:53:17