5.9.1 检查表
高质量的子程序
些部分独立成另一个子程序会更好的话,你这样做了吗?
· 是否用了明显而清楚的动宾词组对过程进行命名?是否是用返回值的描述来命名函
数?
· 子程序的名称是否描述了它做的所有工作?
· 子程序的内聚性是不是很强的功能内聚性?它只做一件工作并做得很好吗?
地启用或去掉调试帮助?
检查,以使得它不影响子程序之
总体问题
· 创建子程序的理由充分吗?
· 如果把一个子程序中的某
· 子程序的耦合是不是松散的?两个子程序之间的联系是不是小规模、密切、可见和灵
活的?
· 子程序的长度是不是它的功能和逻辑自然地决定的:而不是由人为标准决定的?
防错性编程
· 断言是否用于验证假设?
· 子程序对于非法输入数据进行防护了吗?
· 子程序是否能很好地进行程序终止?
· 子程序是否能很好地处理修改情况?
· 是否不用很麻烦
高质量的子程序
些部分独立成另一个子程序会更好的话,你这样做了吗?
· 是否用了明显而清楚的动宾词组对过程进行命名?是否是用返回值的描述来命名函
数?
· 子程序的名称是否描述了它做的所有工作?
· 子程序的内聚性是不是很强的功能内聚性?它只做一件工作并做得很好吗?
地启用或去掉调试帮助?
检查,以使得它不影响子程序之
总体问题
· 创建子程序的理由充分吗?
· 如果把一个子程序中的某
· 子程序的耦合是不是松散的?两个子程序之间的联系是不是小规模、密切、可见和灵
活的?
· 子程序的长度是不是它的功能和逻辑自然地决定的:而不是由人为标准决定的?
防错性编程
· 断言是否用于验证假设?
· 子程序对于非法输入数据进行防护了吗?
· 子程序是否能很好地进行程序终止?
· 子程序是否能很好地处理修改情况?
· 是否不用很麻烦
· 是否信息隐蔽、松散耦合,以及使用“防火墙”数据外的代码?
· 子程序是否检查返回值?
· 产品代码中的防错性代码是否帮助用户,而不是程序员?
参数传递问题
· 形式参数与实际参数匹配
· 子程序中参数的排列合理吗?与相似子程序中的参数排列顺序匹配吗?
· 接口假设说明了吗?
. 子程序中参数个数是不是7 个或者更少,
· 是否只传递了结构化变量中另一个子程序用得到的部分?
. 是否用到了每一个输入参数?
. 是否用到了了每一个输出参数?
. 如果子程序是一函数,是否在所有情况下它都会返回一个值?