1、为什么要创建子程序? 降低复杂度(抽象)、引入简单易懂的抽象、避免代码重复、隐藏顺序、简化复杂的布尔判断、改善性能;
2、循环,判断嵌套层次较深时,考虑抽象子程序;
3、子程序应当有很高的内聚性,即所执行的操作和名字完全相符,不做其他任何事情;
4、封装顺序的内聚性(把有顺序关联的操作封装起来);
5、反例: Startup() shundown() initialALL(),都是临时的内聚,不符合设计规范;
6、子程序命名: 描述子程序做的事情、避免表述不清的动词、不要通过加个数字来建立新的子函数、长度维持在9-15个字符、对返回值有所描述、使用动宾短语;
7、子程序可以有多长? 50-150行,超过200行则说明需要注意了;
8、子程序的参数组织,按照 输入-修改-输出的顺序组织(i_ m_ o_前缀说明),在接口中对假定做说明(如单位,枚举等等),个数限制在7个以内;
9、过程(void)和函数(有返回值);
10、确保写出能正确展开的宏: #define Cube(a) ((a)*(a)*(a));
11、有时候,封装很简单的操作为函数也有好处;