1.静态检查

静态检查、动态检查、无检查

编程语⾔通常能提供以下三种⾃动检查的⽅法:

静态检查: bug在程序运⾏前发现

动态检查: bug在程序运⾏中发现

⽆检查: 编程语⾔本⾝不帮助你发现错误,你必须通过特定的条件(例如输出的结果)检查代码的正确性。

很明显,静态检查好于动态检查好于不检查。

静态检查

  • 语法错误,例如多余的标点符号或者错误的关键词。即使在动态类型的语⾔例如Python中也会做这种检查: 如果你有⼀个多余的缩进,在运⾏之前就能发现它。
  • 错误的名字,例如 Math.sine(2) . (应该是 sin .)
  • 参数的个数不对,例如 Math.sin(30, 20) .
  • 参数的类型不对 Math.sin("30") .
  • 错误的返回类型 ,例如⼀个声明返回 int 类型函数 return "30" ;

动态检查

  • ⾮法的变量值。例如整型变量x、y,表达式 x/y 只有在运⾏后y为0才会报错,否则就是正确的。
  • ⽆法表⽰的返回值。例如最后得到的返回值⽆法⽤声明的类型来表⽰。
  • 越界访问。例如在⼀个字符串中使⽤⼀个负数索引。
  • 使⽤⼀个 null 对象解引⽤。

由此看出静态检查倾向于类型错误 ,即与特定的值⽆关的错误,动态类型检查倾向于特定值才会触发的错误,即在运行时才能知道的具体值引发的错误。

工程派的代码风格

优点: ⼀次只写⼀点点, ⼀边写⼀边测试. 

优点: 记录代码的设想、意图 (document the assumptions that your code depends on)

优点: 静态代码检查将会保护你的代码不沦为“愚蠢的代码”

学习软件构造的三个重要目标

本门课程的主要⽬标为学习如何⽣产具有如下属性的软件:

安全健壮性. 正确性 (现在看起来是正确的), 防御性 (将来也是正确的)

可读性. 我们不得不和以后有可能需要理解和修改代码的程序员进⾏交流 (修改 BUG 或者添加新的功能), 那个 将来的程序员或许会是⼏个⽉或者⼏年以后的你, 如果你不进⾏交流, 那么到了那个时候, 你将会惊讶于你居然 忘记了这么多, 并且这将会极⼤地帮助未来的你有⼀个良好的设计。

可改动性. 软件总是在更新迭代的, ⼀些好的设计可以让这个过程变得⾮常容易, 但是也有⼀些设计将会需要让 开发者扔掉或者重构⼤量的代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值