首页 > 代码库 > 内聚性分类

内聚性分类

  1. 功能内聚 

         最强的内聚性,一个子程序只完成一项操作,例如sin() min(),前提是子程序所执行的操作与其名字相符,如果它还做了其他的事情,就不够内聚,并且其名字也是有问题的。

  2. 顺序内聚 

    某个程序里顺序执行一系列操作,后一个操作必须在前一个操作完成后才能正确执行,例如:

    操作1:根据ID取名称,判断名称是否正确。

    操作2:将名字转成小写。

    void print_name(id)

    {

        const char* name = get_name(id);

        if (name == NULL){

        //

        }

        tolower(name);

    }

  3. 通信内聚

    某个程序内的不同操作共用了相同的数据,例如:

    更新某个数据时,先查找是否存在,然后再执行插入操作,两个操作都用到相同的参数:

    void update_id(int id)

    {

        bool is_exist = find(id);

        if (is_exist){

            //

        }

        insert(id);

    }

  4. 临时内聚

    某个程序含有一些需要的执行的时候才放到一起的操作。例如初始化函数:

    startup()

    {

        以下操作之间没有联系,但是程序启动时需要都执行:

        init_id_list();//使用子程序完成操作,而不是将繁琐的初始化代码写在这里

        inti_error_list();

        ...

    }

  5. 过程内聚

     指一个子程序中的操作按特定的顺序进行,这些操作原本并不需要关联到一起,只是因为人为的赋予特定的顺序。

  6. 逻辑内聚

    指若干操作被放到同一个程序中,通过传入的控制标识选择执行其中的一项操作。这是不良的内聚。例如下面的读取函数:

    read_data(int type)

    {

         switch(type){

         case 1:{

         // 一堆读取操作

         }

         break;

         case 2:{

         // 一堆读取操作

        }

        break;

        ...

        default:

        break;

         }

    }

    但是如果程序只是由一堆if或case和调用其他子程序的语句组成,这种逻辑内聚也是很好的。例如:事件处理器。

  7. 巧合内聚

    指程序中各个操作之间没有任何联系。这种就是混乱的内聚性。

内聚性分类