诊断Java代码: 操纵静态典范的来因[Java编程]
本文“诊断Java代码: 操纵静态典范的来因[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
静态范例 ― 大都程序员喜好它或痛恨它.支持者夸耀说静态范例让他们写出更干净更坚固的代码,没有它们则做不到这么好.批判者抱怨说静态范例增添了程序的复杂性.
是的,静态范例不是免费午饭;有时刻,它们用起来很乏味.但是,假如我们主要关心的是使代码没有错误,那么,总的说来,Java 编程还是拥有并利用静态范例好些.为什么?静态范例查抄:
通过早期错误检测,提高结实性
通过在最佳的时刻作所需的查抄,提高性能
补偿单元测试的缺陷
我们来更细心地解析这些缘由,并看一看静态范例查抄和结对编程(pair programming)混用.
通过早期检测,提高结实性
静态范例查抄能提高程序结实性.为什么?因为它有助于尽快找到错误 ― 在程序运行前.这里的逻辑舍此无它.错误越早被发现,问题诊断起来就越简单,也就只有越少的数据会被错误的计算破坏.
在程序运行前就找到并诊断错误是抱负状况.这个长处使静态范例查抄成为编程语言计划中的巨大成功,因为它是少数几种能在程序运行前自动检测程序中的错误的办法,并且它可在可承受的时间内完成这个任务.“可承受的时间”意思是与程序长度呈线性关系的时间(有一个很小的常数系数),而不是别的情势自动查抄所要求的呈立方乃至呈指数关系的时间(很多乃至根本不保证完成).
是的,范例系统越强盛,编动身序来就越简单(且系统将检测越多的错误).我不否定 Java 简单的范例系统留有很多缺憾;它常常阻碍我们,迫使我们用强迫转型来绕过.但这种情况正在渐渐改进.
Sun JSR14 编译器在语言中增添了情势有限的泛型(也称为 参数化)范例;我们相信它早晚会被加入该语言,因为它目前在 Java 社区历程中得到了刚强的支持.更高级的语言扩大(比方 NextGen)答应在 JSR14 供应的增添的表达力上更上一层楼.那是功德,因为在很多环境下 NextGen 都有助于削减乃至在 JSR14 中也是需求的一些增添的复杂性.请参阅 参考资料找到关于这个问题的更多信息.(除了 JSR14 链接,还有些关于 参数的多态性的文章.)
但是,静态范例查抄的好处不但仅是结实性.它还能保护您的程序的性能.
通过削减所需的查抄,提高性能
在安全的语言中(“安全”的意思是指不答应我们破坏它自己的抽象的语言),对传给办法的参数的范例作各种查抄是必须的并一定得完成,对被存取的域的范例的查抄也是必须的并一定得完成.假如这些查抄不是静态地完成,那么它们必须在运行时完成.
举行这些所需的查抄是费时的,在运行时举行这些查抄的语言,其性能会呼应受损.当不变量被静态地查抄时,我们没必要在运行时查抄它,从而加快程序运行.所以,静态范例查抄使我们得以写出更结实更高效的代码.
传统上认为编译时静态范例查抄是低效的.关于用 C/C++ 之类语言写的大程序来说,在文件间链接各种范例引用是很费时的,因为每次编译时,各种文件必须被合在一同生成一个大的可履行文件.但是 Java 语言完好避免了这个问题,因为类是脱离编译的,在需求时装入到 JVM.没有必要把全部的引用文件链接成一个可履行文件 ― 所以在编译时没有呼应的放慢.
目前,我们对那些声称静态范例在单元测试环境下是不必要的人说些什么呢?
以上是“诊断Java代码: 操纵静态典范的来因[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |