Code Complete笔记——第7章 子程序

第7章 高质量的子程序

7.1 创建子程序的正当理由

降低复杂度(缩小代码规模、改善可维护性、提高正确性):内部循环或条件判断嵌套很深,考虑子程序;

引入中间、易懂的抽象,提高可读性;

避免代码重复;

支持子类化;

隐藏顺序:把需要按顺序完成的事情放到一起,对外隐藏细节;

隐藏指针操作;

提高可移植性:不可移植的部分包括非标准功能、对硬件和操作系统的依赖等;

简化复杂的布尔判断;

改善性能,减少需要进行优化的地方;

*简单小巧的子程序

提高可读性;

为之后可能变复杂的操作进行封装;


7.2 在子程序层上的设计

功能上的内聚:一个子程序仅执行一项操作;

顺序上的内聚:一个子程序包含需按特定顺序完成的操作,它们需要共享数据,只有全部执行完毕后才完成一项功能;

通信上的内聚:一个子程序中的不同操作使用同样的数据,而不存在其他任何联系;

临时的内聚性:因为需要同时执行才放到一起的操作组成的子程序,如startup(),shutdown()等。

*不可取的内聚

过程上的内聚:特定顺序完成的操作(与顺序上的内聚有何不同?);

逻辑上的内聚:若干操作在同一子程序,通过传入控制标志选择执行(如果子程序的代码仅由if/else或case语句以及调用其他子程序的语句组成,那么是允许的,此时它的唯一功能就是发布各种命令——“事件处理器”);

巧合的内聚性:无任何关联的操作被凑在一起;

7.3 好的子程序名字

描述子程序所做的所有事情,包括输出结果及其副作用;

避免使用无意义表述不清的动词,如handle,dealwithOutput等;

不要通过数字来形成不同的子程序名字;

根据需要确定名字长度:9-15;

要对返回值有所描述;

使用语气强烈的动宾结构,如printDocument(),如果是针对对象,则可省去宾语,如document.print();

准确使用对仗词;

为常用操作确立命名规则;

7.4 子程序可以写多长

一屏代码(50-150行),方便查看上下文;

7.5 如何使用子程序参数

按照输入-修改-输出的顺序排列参数,考虑不同的命名规则;

如果几个子程序都用了类似的一些参数,应该让参数的排列顺序保持一致,产生记忆效应;

使用所有的参数;

把状态或出错变量放在最后;

不要把子程序的参数用作工作变量,应该使用局部变量,防止输入变量被修改;

在接口中对参数的假定加以说明,相比于写在注释中,更好的方式是使用断言(指明参数输入修改或输出,大卫,状态代码和错误值的含义,范围,特定数值等);

7+-2原则;


转载于:https://my.oschina.net/JaneL/blog/508540

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值