Welcome 微信登录

首页 / 软件开发 / JAVA

诊断Java代码: Repl提供交互式评价

诊断Java代码: Repl提供交互式评价

诊断Java代码: Repl提供交互式评价2011-02-12 IBM Eric E. Allen通常,在运行 Java 程序时,必须使用 String[] 输入参数将参数传入,从 main() 方法运行程序。但是如果程序仍在调试中,那么,这可能会成为一项繁重的任务。本月,Eric Allen 讨论对程序中的表达式和语句进行交互式评价的优点,并且提供几个帮助您处理这一任务的 Java repl(“read-eval-print-loop&rdq...
诊断Java代码: Liar View错误模式

诊断Java代码: Liar View错误模式

诊断Java代码: Liar View错误模式2011-02-12 IBM Eric E. AllenLiar, liar!设想一下:您已经为一个分布式系统精心设计了一个极好的 GUI 程序,它包含了客户机请求的所有东西及其它一些东西。您已经让它运行通过了一个自动化测试套件的测试 ― 由于不变量的数量是个天文数字,因此,自动化测试是必须的。测试的结果是程序获得了一张“无错误的健康证明书”。发布这个 GUI 的期限到了,但是,作为一个...
诊断Java代码: Java编程中的断言和时态逻辑

诊断Java代码: Java编程中的断言和时态逻辑

诊断Java代码: Java编程中的断言和时态逻辑2011-02-12 IBM Eric E. Allen虽然传统断言可以增加对 Java 代码执行的检查次数,但有许多检查不能用它们来执行。弥补这一缺陷的方法是使用“时态逻辑”,它是一种用于描述程序状态如何随时间而更改的形式体系。在本文中,Eric Allen 将讨论断言,介绍时态逻辑并描述用于处理程序中时态逻辑断言的工具 (下一篇文章将检查以前的错误模式和时态逻辑的应用程序)。我们...
诊断Java代码: Impostor Type错误模式

诊断Java代码: Impostor Type错误模式

诊断Java代码: Impostor Type错误模式2011-02-12 IBM Eric E. Allen当使用字段中特殊的标记来区别对象类型时,可能会产生标记对相关数据误贴标签的错误 ― 通称为 Impostor Type 错误模式。在诊断 Java 代码的这一部分中,Eric Allen 对这个错误的症状和起因进行了分析,详细说明了预防错误发生的方法,并讨论了一种吸引人的混合实现方法,这种方法不使用 impostor type,但最后,还是有很多相...
诊断Java代码: Double Descent错误模式

诊断Java代码: Double Descent错误模式

诊断Java代码: Double Descent错误模式2011-02-12 IBM Eric E. Allen不要强制转换这个类!与可怕的 空指针异常(该异常除了报告空指针之外,对于将要发生的事情什么也不说)不同,类强制转换异常相对来说容易调试。类强制转换经常发生在递归下行数据结构的程序中,通常是当代码的某些部分在每次方法调用中下行了两级且在第二次下行时调度不当时发生的。程序员可通过学习 Double Descent 错误模式来识别这种问题。Double...
诊断Java代码: Broken Dispatch错误模式

诊断Java代码: Broken Dispatch错误模式

诊断Java代码: Broken Dispatch错误模式2011-02-12 IBM Eric E. Allen整体和部分还记得这条谚语吗,“整体大于部分之和”?如果把一个个独立的事件组合成一个相互作用的整体,产生的结果会比单个个体的作用之和要大得多。程序也是一样的道理。随着一个个新方法被添加到程序中,整个程序可能的控制流程迅速增加。对于大型程序而言,很快局面就会无法控制了。就象是一个荒谬而又不可思议的戏法,有时您得到的最终结果并...
Eclipse Ganymede简介

Eclipse Ganymede简介

Eclipse Ganymede简介2011-02-12 IBM Chris Aniszczyk简单地说,Ganymede 就是指同步发行的 24 个主要的 Eclipse 项目。于 Ganymede 和 Eclipse 发行系列,通常必须注意的是即使它是同时发行,也不意味着这些项目是一体的。每个项目仍然是独立的 开源项目,有独立的项目领导层、提交者并按照自己的开发计划运作。最终,Ganymede 将通过提供更加透明和可预测的开发周期来提高在 Eclips...
利用Spring框架改进J2EE编程

利用Spring框架改进J2EE编程

利用Spring框架改进J2EE编程2011-02-12 BEA Peter Braswell摘要J2EE编程正在变得越来越复杂。J2EE已经发展为一个API、复杂化的编程和配置的复杂网络。为了应对这种复杂性,新的框架和方法不断涌现。这些框架高度依赖于一个称为IoC(Inversion of Control,反向控制)的概念。本文将探讨这种方法的一些特性和优点,因为这种方法与J2EE编程相关,而且可以使J2EE编程变得更轻松。简介马克·吐温的...
Java理论与实践: JDK 5.0中更灵活、更具可伸缩性的锁定机制

Java理论与实践: JDK 5.0中更灵活、更具可伸缩性的锁定机制

Java理论与实践: JDK 5.0中更灵活、更具可伸缩性的锁定机制2011-02-12 IBM Brian GoetzJDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择。例如, java.util.concurrent.lock 中的类 ReentrantLock 被作为 Java 语言中 synchronized 功能的替代,它具有相同的内存语义、相同的锁定,但在争用条件下却有更好的性能,此外,它还有 synchronized 没...
Java开发者需坚守的十大基本准则

Java开发者需坚守的十大基本准则

Java开发者需坚守的十大基本准则2011-02-12唐朝一、为代码加注释。虽然每个人都知道这点,但有时却不自觉忘了履行,今天你“忘了”加注释了吗?虽然注释对程序的功能没什么“贡献”,但过一段时间,比如说两星期之后或者更长,回过头来看看自己的代码,说不定已经记不住它是干什么的了。如果这些代码是你个人的,那还算是走运了,不幸的是,当然了,大多数时候都是别人的不幸,很多时候大家都是在为公司写代码,写代码的人也许早...
检查Comparator接口的契约义务

检查Comparator接口的契约义务

检查Comparator接口的契约义务2011-02-12java.util.Comparator接口容易被实现并使用,但是在Comparator的API文档里有些部分还是应当仔细阅读一下的。实现了Comparator接口的类可以传给例如Collections.sort这样的排序方法。它们也可以被Map或者Set类使用,用来保证Map或者Set里的元素始终是按某种顺序排列的。TreeSet和TreeMap就是这样的类。在Comparator接口里,只有一个...
迁移到Eclipse: Eclipse对IntelliJ IDEAA评估开发指南

迁移到Eclipse: Eclipse对IntelliJ IDEAA评估开发指南

迁移到Eclipse: Eclipse对IntelliJ IDEAA评估开发指南2011-02-12 IBM David GallardoEclipse 是一个免费的、正日益流行起来的 Java 集成开发环境,最新版本的 Eclipse 中提供了很多特性,这些特性使它不但能与其他免费的 IDE 竞争,而且,即使是 IntelliJ IDEA 之类的专业商业软件,Eclipse 也能与之竞争。本文将 Eclipse 与 IDEA 进行了简单比较,为那些希望转...
如何应用Java的可变参数

如何应用Java的可变参数

如何应用Java的可变参数2011-02-12Java语言在JDK1.5中首次推出可变参数,variable arguments,或简称varargs。这一新语言特征给软件开发人员在编写方法重载时提供了方便和灵活性。但可变参数的应用并不像想象的那么简单,使用时有其特殊要求和局限性。重载的最好例子读者朋友可能有这样的编程经历:在编写一个方法时,其参数随着程序运行的条件而变化,在编译期间无法确定。具体地讲,例如编写一个打印参加聚会party的程序,其中方法pr...
探讨Java内部类的可见性

探讨Java内部类的可见性

探讨Java内部类的可见性2011-02-12zhangjunhd在Java中,当生成一个内部类的对象时,此对象与制造它的外部类通过外部类的.this保持着联系,因此该内部类对象可以访问其外部类对象的所有成员,包括private成员。而该内部类对象对于其他类的对象的访问,遵照常规的访问权限语法,这一点也没有什么特别支持。这里需要探讨的是,外部类以及其他类的对象可以如何访问到某个内部类对象,即内部类的可见性问题。下面是一个示例程序Out.java,其中包含了...
驾驭Eclipse功能部件

驾驭Eclipse功能部件

驾驭Eclipse功能部件2011-02-12 IBM Pat McCarthy如何使用Eclipse 功能部件来定制Eclipse 行为构建一个插件是很有趣的:您开始编写代码并创建您想要的工具。把插件拷贝到 Eclipse 或一个基于 Eclipse 的产品中的 plupgins 目录下,这个插件在 Eclipse 运行期环境中就可以使用了。当再一次使用 Eclipse 的时候,插件将被找到,而且经过平台的启动处理,它在运行期配置中将是可用的。但是谁知道...
<< 441 442 443 444 445 446 447 448 449 450 >>