编码检查表-编写无错代码的指南

编码检查

总结 了《 Writing Clean Code 》的所有 观 点,教你 编 写整 洁 无 错 的代 码 。使用本表的最好 办 法是花两周 时间评审 一下你的 设计 和 编码实现 。先花几分 钟时间 看一看列表,一旦熟悉了 这 些 问题 ,就可以灵活自如地按它写代 码 了。此 时 ,就可以把表放在一 边 了。

一般问题

── 你是否 为 程序建立了 DEBUG 版本?

── 你是否将 发现 的 错误 及 时 改正了?

─一 你是否 坚 持 彻 底 测试 代 码 .即使耽 误 了 进 度也在所不惜?

── 你是否依靠 测试组为 你 测试 代 码 ?

─一 你是否知道 编码 的 优 先 顺 序?

─一 你的 编译 程序是否有可 选 的各 种 警告?

关于将更改归并到主程序

─一 你是否将 编译 程序的警告(包括可 选 的)都 处 理了?

── 你的代 码 是否未用 Lint

─一 你的代 码进 行了 单 元 测试吗 ?

─一 你是否逐 步 通 过 了 每 一条 编码 路径以 观 察数据流?

─一 你是否逐 步 通 过 了 汇编语 言 层 次上的所有 关键 代 码 ?

── 是否清理 过 了任何代 码 ?如果是,修改 处经过彻 底 测试 了 吗 ?

─一 文档是否指出了使用你的代 码 有危 险 之 处 ?

── 程序 维护 人 员 是否能 够 理解你的代 码 ?

每当实现了一个函数或子系统之时

─一 是否用断言 证实 了函数参数的有效性?

─一 代 码 中是否有未定 义 的或者无意 义 的代 码 ?

─一 代 码 能否 创 建未定 义 的数据?

─一 有没有 难 以理解的断言? 对 它 们 作解 释 了没有?

─一 你在代 码 中是否作 过 任何假 设 ?

─一 是否使用断言警告可能出 现 的非常情况?

─一 是否作 过 防御性程序 设计 ?代 码 是否 隐 藏了 错误 ?

─一 是否用第二个算法来 验证 第一个算法?

─一 是否有可用于确 认 代 码 或数据的启 动 ( startup ) 检查 ?

─一 代 码 是否包含了随机行 为 ?能消除 这 些行 为吗 ?

── 你的代 码 若 产 生了无用信息,你是否在 DEBUG 代 码 中也把它 们 置 为 无用信息?

── 代 码 中是否有稀奇古怪的行 为 ?

── 若代 码 是子系 统 的一部分,那 么 你是否建立了一个子系 统测试 ?

── 在你的 设计 和代 码 中是否有任意情况?

── 即使程序 员 不感到需要,你也作完整性 检查吗 ?

── 你是否因 为 排 错 程序太大或太慢,而将有价 值 的 DEBUG 测试 抛置一 边 ?

── 是否使用了不可移植的数据 类 型?

─一 代 码 中是否有 变 量或表达式 产 生上溢或下溢?

── 是否准确地 实现 了你的 设计 ? 还 是非常近似地 实现 了你的 设计 ?

── 代 码 是否不止一次地解同一个 问题 ?

── 是否企 图 消除代 码 中的 每 一个 if 语 句?

── 是否用 过 嵌套?:运算符?

── 是否已将 专 用代 码 孤立出来?

── 是否用到了有 风险 的 语 言 惯 用 语 ?

─一 是否不必要地将不同 类 型的运算符混用?

── 是否 调 用了返回 错误 的函数?你能消除 这种调 用 吗 ?

─一 是否引用了尚未分配的存 储 空 间 ?

─一 是否引用已 经释 放了的存 储 空 间 ?

── 是否不必要地多用了 输 出 缓 冲存 储 ?

── 是否向静 态 或全局 缓 冲区 传 送了数据?

── 你的函数是否依 赖 于另一个函数的内部 细节 ?

── 是否使用了怪异的或有疑 问 的 C 惯 用 语 ?

── 在代 码 中是否有 挤 在一行的毛病?

── 代 码 有不必要的灵活性 吗 ?你能消除它 们吗 ?

─一 你的代 码 是 经过 多次“ 试 着”求解的 结 果 吗 ?

─一 函数是否小并容易 测试 ?

每当设计了一个函数或子系统后

─一 此特征是否符合 产 品的市 场 策略?

─一 错误 代 码 是否作 为 正常返回 值 的特殊情况而 隐 藏起来?

─一 是否 评审 了你的界面,它能保 证难 于出 现误 操作 吗 ?

─一 是否具有多用途且面面 俱 到的函数?

─一 你是否有太灵活的(空空洞洞的)函数参数?

─一 当你的函数不再需要 时 ,它是否返回一个 错误 条件?

─一 在 调 用点你的函数是出易 读 ?

─一 你的函数是否有布 尔 量 输 入?

修改错误之时

── 错误 无法消失,是否能找到 错误 的根源?

─一 是修改了 错误 的真正根源, 还 是 仅仅 修改了 错误 的症状?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值