静态检查(static checking)

软件建设(Software Construction)

静态检查(static checking)

主题
  1. 静态检查。
  2. 好软件的三个属性。
类型

类型是一组值,可对它们进行操作。java有几种原始类型:

  • int
  • long
  • boolean
  • double
  • char等

以及对象类型

  • String
  • BigInteger

java约定,原始数据类型是小写,而对象类型(Object Type)首字母大写。

操作一般有几种类型:

  • 中缀、前缀和后缀操作。如a+b , –a , a++。
  • 对象的方法。如bigint.add(bigint2)。
  • 一个函数。如Math.abs(-1).
静态类型

java是一种静态类型语言。所有变量的类型在编译时期(程序运行之前)都已知,并且编译器可以推断出所有表达式的类型。例如a和b都是int类型,那么a+b也是int类型。IDEA或Eclipse在你编写代码的过程中这样做,因此你可以在你编程的过程中发现很多bug.

动态语言如Python,这种类型的检查需要在程序执行时才会执行。

静态类型是一种特殊的静态检查(static checking),意味着可在编译时期检车bugs。在本课程中很多点子都是为了消除bugs而存在的,而静态检查就是首选的点子,以下代码就会报错:

"5" * "6" //字符串之间不能进行相乘操作
静态检查、动态检查,不检查

一种语言提供:

  • 静态检查:在程序执行之前自动被发现。
  • 动态检查:程序执行期间被发现。
  • 不检查:语言不帮你找到bugs,需要开发者自己去查看,解决错误。

静态检查可以发现:

  • 语法错误。如额外的标点符号或者虚假的词语。
  • 错误名称。如Math.sine(2)
  • 参数个数错误。如Math.sin(20,30).
  • 参数类型错误。如Math.sin("30").
  • 返回值错误。如函数要求返回int,而程序为return "30"

动态检查可以发现:

  • 不合法的参数值。如除法中,分母不能为0。
  • 造型异常。
  • 超出索引允许范围。
  • 空指针异常。obj.sayHi(),obj为null
建议与非建议

建议

  • 编写一些程序,进行一次测试。
  • 注释好你代码所依赖的东西。如先决条件等。
  • 充分利用静态代码检查。不要假设你的代码无bug,或者容易发现和修复。
目标
  • safe from bug。现在表现正确,将来也表现正确。
  • easy to understand。代码要能与将来的开发者沟通,因为他们要修复bug或者增加新功能。将来的开发者可能是你,如果你没有让你的代码易于理解,你将追悔莫及,反之则庆幸万分。
  • ready to change。软件总在不断改变,一些设计使之易于改变。而一些代码只能丢弃或者重写。
总结
  • safe from bug。静态检查在程序执行之前帮助我们排除error.
  • easy to understand。类型已经明确表示,是故帮助我们理解。
  • ready to change。静态检查让你容易改变代码,因为在你改变代码的时候,静态检查会明确其它需要一起改变的地方。如,int a = 100。如果你改成int a2 = 100。那么引用它的所有地方都报错。

参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值