- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
20170308 《代码大全》——10 程序语句检查表
《代码大全》——程序语句检查表
刘宏
2017-03-08
十多年前,为了很好构建代码,拜读了这方面的主要书籍《代码大全》,从中获得不少收获。本文将个人认为较为重要使用的内容整理出来,期望对各位同事能够有所启发。
在《代码大全》中给出的检查表是具有较高的参考价值。
本文主要是程序语句检查表内容。
顺序程序语句
组织顺序式程序代码
把语句间的依赖关系表示得很清楚吗?
子程序名是否把依赖关系表示得很清楚?
子程序的参数是否把依赖关系表示得很清楚?
若代码的依赖关系不清楚,用注释注明了吗?
代码能从上读到下吗?
变量的出现靠得很近吗? ——从跨度和存活时间来考虑。
是否把相关语句组织在一起?
是否把相对独立的各相关语句写成子程序了?
条件语句
if-then语句
正常情况路径在代码中流向是否很分明?
if-then语句在出现等号时流向是否正确?
else语句是否有必要?
else语句正确吗?
if语句和else语句正确吗?它们是否弄反了?
正常情况是否跟在if后而非else后?
if-then-else
复杂的条件是否封装成布尔函数调用了?
最常见情况放在前面吗?
全部情况都覆盖住了吗?
if-then-else语句是最好的选择吗?——用case语句代替是否更好?
case语句
各情况的安排次序有含义吗?
每种情况对应的操作简单吗?——如需要调用别的子程序。
case 语句中的变量有实际意义吗?它是为了用case 语句而单纯地定义出来的伪变量吗?
缺省语句的用法是否合法(规范)?
用缺省语句检查和报告异常情况吗?
在C 语言中,每一情况的结尾用了break了吗?
少见的控制结构
goto
goto是最后的选择吗?用goto使程序更好读更好维护吗?
用goto是为效率的目的吗?用goto达到此目的了吗?
一个程序是否只用一个goto呢?
Goto只转向前面的程序段而不是转向其后面的程序段吗?(后面指已执行过程序)
Goto所转向的标号都有了吗?
return
每个子程序的return数目是否最少?
Return增强了可读性了吗?
递归调用
用递归调用的代码含使递归结束的语句吗?
程序设置了安全计数器来保证递归调用终止了吗?
是否只在一个程序中用递归调用?
递归调用的深度是否限制在程序堆栈容量可满??的条件下。
递归调用是实现程序的最优途径吗?它比循环更简单吗?
常见的控制问题
控制结构方面
表达式用True和False而非1 和0?
布尔型表达式的值是否隐含地与False比较?
是否通过定义中间布尔型变量和布尔型函数及用决策表的方法来简化表达式?
布尔型表达式是用肯定形式写出来的吗?
在C 中,数值、字符,指针是显式与0比较的吗?
begin和end能保持平衡吗?
为了使程序看起清楚,需要的地方用begin和end对标明了吗?
空语句看起来清楚吗?
通过诸如重新组合测试条件、转化为if-then-else或case 语句或把嵌套内代码写成子程序的方法来简化嵌套语句了吗?
如果程序的决定点数超过10,有什么正常理由不重新设计它吗?
原创力文档


文档评论(0)