哈工大软件构造学习心得from 01 静态检查

01 静态检查

冰雹系列

定义:从正整数n开始,如果n是偶数,则下一个数是n/2,否则下一个数是3n+1,直到n等于1。

另外,记得在定义的方法前面写上注释。这些注释应该描述了这个方法的功能,输入输出/返回,以及注意事项。记住注释不要写的啰嗦,而是应该直切要点,简洁明了。例如在上面的代码中,n是一个整型的变量,这个在声明的时候int已经体现出来了,就不需要进行注释。但是如果我们设想的本意是n不能为负数,而这个编译器(声明)是不能检查和体现出来的,我们就应该注释出来,方便阅读理解和修改。

变化的值、可被赋值的改变

“快照图”(snapshot diagrams)用来辨别修改一个变量和修改一个值的区别。给一个变量赋值:改变这个变量指向的对象(值也不一样)。
对一个可变的值进行赋值操作:例如数组或者列表,实际上是在改变对象本身的内容。
变化是“邪恶”的,好的程序员会避免可改变的东西,因为这些改变可能是意料之外的。
不变类型是指那些这种类型的对象一旦创建其内容就不能被更改的类型。
Java也给我们提供了不变的索引:声明的时候加上final,变量被初始化后就不能再次被赋值了 :

如果编译器发现你的final变量不只是在初始化的时候被“赋值”,那么它就会 错。换句话说,final会提供不变索引的静态检查。
正确的使用final是一个好习惯,就好像类型声明一样,这不仅会让编译器帮助你做静态检查,同时别人读起来也会更顺利一些。
在hailstoneSequence方法中有两个变量n和list,我们可以将它们声明为final吗不行,list可以。因为我们需要改变n指向的对象,而List对象本身的内容是可以更改的,我们也不需要改变list对应的对象

黑客派(Hacking)和 工程派(Engineering)比较

黑客派的编程风格可以理解为“放飞自我并且乐观的”:
缺点: 在已经编写大量代码以后才测试它们
缺点: 将所有的细节都放在脑子里, 以为自己可以永远记住所有的代码, 而不是将它们编写在代码中
缺点: 认为 BUG 都不存在或者它们都非常容易发现和被修复.
工程派对应的做法是:
优点: 一次只写一点点, 一边写一边测试. 在将来的课程中, 我们将会探讨”测试优先编程” (test-first programming)
优点: 记录代码的设想、意图 (document the assumptions that your code depends on)
优点: 静态代码检查将会保护你的代码不沦为“愚蠢的代码”

总结

我们今天的主题是静态检查,下面是这一主题与这门课的关联:

  • 帮助我们远离bug
  • 易于阅读
  • 易改动:静态检查会在你改写代码的同时检查出你与此同时犯的一些错误。例如,当你更改变量的名称或类型时,编译器会立即在使用该变量的所有位置显示错误,并提醒你更正这些错误。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91437 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月6日
下一篇 2020年5月6日

相关推荐