编者注:Andy是OSI(开发系统集成者)的CEO,同时也是位思想先锋及博客作者。

  William F. Buckley.Jr 曾经说过,“保守主义者是那些逆着历史潮流不断喊停的人,其他人都不愿意这么做或者对他们这么做显得没有耐性”。虽然我对此了解不多,但是每次看到有Java开发人员做以下事情或者我自己被迫做这些事情时,总想跳出来叫停。

  1、遍历结果集并构造对象

while

(result.next()) {
 String
 name = result.getString(“name”);
 String
 address = result.getString(“address”);
 String
 email = result.getString(“email”);
 String
 phone = result.getString(“phone”);
 stuff.add(new

AddressEntry(name,address,email,phone));
}

  如果你是个时髦的开发者而不是专业人员,显然你从某篇博客中读过有开发者遇到Hibernate的“性能问题”,因而认为ORM都不好,觉得手动编码“明显更好”。喜欢的话你当然可以用JDBCTemplate之类,但是谢谢你的对它们的无端指责,我还会继续用我的JPA/Hibernate。

  2、在交易型系统中写PL/SQL

  随着时间推移,你系统中的业务逻辑会被逐步迁移到关系数据库中,所有宝贵的设备交易都会迁移到数据库中去。有的人将它们转换为类似COBOL的处理方式,绑定到调用物化视图的触发器中。通过他们调用其它扁平化版本。简而言之,很快你会拥有一个极其难以控制的遗留系统。这对Oracle的投资者而言是好事,但对我们则不然。

  3、编写,调试甚至真正使用Swing应用程序

  许多年来我一直觉得自己在GUI代码方面相当差劲,甚至根本不该去碰前端的东西。Java看起来根本不应该和前端有什么关联,Swing效率很低。没错,如果你是开发NetBeans的前Sun员工,又不用担心浏览器,而且还有一堆内存空间可以尽情使用的话,确实可以写出很快的Swing代码来。否则Swing的确很慢。默认情况下Swing弄出一堆跟原生GUI动画一样的图形界面来,让人不爽。此外还有Java的沙箱模型。

  4、强制类型转换

  Java泛型并不完美,甚至不是我所的 解决方案,有时总会有些边界情况使得泛型无法有效处理。例如,我实在不想再这么做:

Foo
 bar = (Foo) FooFactory.get(“bar”);

  不幸的是,总有些库没有及时更新,而且遗留代码总是存在。我们只好自作自受,乖乖多写些测试用例、使用泛型。