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

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

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

1
2
3
4
5
6
7
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(newAddressEntry(name,address,email,phone));
 }

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

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

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

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

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

3、强制类型转换

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

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

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

4、用Calendar或Date来做日期计算

用JDK中的Date和Calendar来做复杂的日期和时间计算简直就是浪费生命。内建的类仅仅支持最基本的操作,而且一点也不直观。我们还是用JODA Time这样的先进库来代替吧,除非您还在用x86编译器来写Web应用,因为除此之外你也享受不到用JDK的Date和Calendar之类带来的乐趣。

5、配置会话(Session)复制

2000年早就过去了,现在所有分布式缓存产品和项目都已用NoSQL的键值对存储方式重构过了。如果需要带状态的客户端,那就用AJAX/Javascript好了,把HttpSession丢一边去吧,这样的话可以大大提高应用程序的可靠性和可扩展性。我们也就不用因为隐藏在深处的一连串异常爆发而半夜起来一路颠簸了。可别误会了,半夜颠簸挺好的,至少我老婆因此买了辆小货车(虽然我更喜欢我那辆Ninja 650机车),不过老实说,是时候换成更好、更快、更聪明的东西了。

6、自己写排序算法

这是最让人厌恶的,我个人对排序算法并不留意。写排序代码的人要么是不知道Java已经提供了你所需的排序算法(或者自己写了个排序的第三方库文件),要么根本不知道Comparable和Comparator如何工作。赶紧去补充一下功课,以后再也不要自己写排序自寻烦恼了。

7、自己写链表,栈,队列等

必须承认,写个基本的链表挺容易。Wikipedia有个关于链表的不错的页面(http://en.wikipedia.org/wiki/Linked_list),上面有含代码的内容,完全可以直接复制粘贴,不过何苦要这么做?也许我是挺懒的,不过我更愿意用一个已经通过测试的数据结构,而我也是花过不少功夫才决定这么做的。

8、自己写池,集合或通用的并发代码

认识Doug Lea大师。崇拜大师,那就支持大师的java.util.concurrent包吧。大师可不是凡人,人家可的以高度并行,因此您想得到的并发问题对策,大师也早已想到。

9、处理日志框架

你用什么词来形容Commons logging、SLF4J之类?答案是:烂!几年前Sun不肯简单地把Log4J的接口引入JDK就导致了这个问题,Oracle倒是可以把java.util.logging做得好点。我宁可大家都用java.util.logging这个烂标准,也不要有人搞出个伟大的其他日志候选项。这就像有人进行下面的对话:

“我有可口可乐”

“喝百事怎么样?”

“管它呢,反正喝了都胖,有什么区别?”

不愿看到Java开发者再做的10件事相关推荐

  1. java10没人开发了吗,不愿看到Java开发者再做的10件事

    Tt!}V8_y0编者注:Andy是OSI(开发系统集成者)的CEO,同时也是位思想先锋及优秀博客作者.VMW9_&etR0 !^/fy;@"s0William F. Buckley ...

  2. 开发测试矛盾java吧_不愿看到Java开发者再做的10件事

    5.用Calendar或Date来做日期计算 用JDK中的Date和Calendar来做复杂的日期和时间计算简直就是浪费生命.内建的类仅仅支持最基本的操作,而且一点也不直观.我们还是用JODA Tim ...

  3. 运维 服务器安装,IT服务器运维安装CentOS后,你要做的10件事

    IT服务器运维安装CentOS后,你要做的10件事 IT服务器小知识CentOS是一款社区驱动的免费Linux发行版,也是一款功能很强大的可替代红帽企业级Linux(RHEL)的发行版.它源自红帽企业 ...

  4. linux mint 19界面美化,安装完 LinuxMint 19.3 后必做的10件事

    安装完 LinuxMint 19.3 后必做的10件事 LinuxMint 发行版是一款基于Ubuntu的易用性好,特别适合入门者使用的一款Linux发行版,相比于Ubuntu,界面和操作更友好. 本 ...

  5. 周末可以做的10件事

    10 fun things for the weekend 告别宅生活:御宅族周末可以做的10件事 The weekend's here and you're thinking about your ...

  6. linux mint 美化软件,安装完 LinuxMint 19.3 后必做的10件事

    LinuxMint 发行版是一款基于Ubuntu的易用性好,特别适合入门者使用的一款Linux发行版,相比于Ubuntu,界面和操作更友好. 本教程主要讲解了在新安装完LinuxMint 19.3 后 ...

  7. 我们可以用计算机做的事,2015地球一小时:今晚我们可以做的10件事(中英文版)

    2015地球一小时:今晚我们可以做的10件事(中英文版) 2015年3月28日周六晚上8点半,全世界成千上万的人们会加入到提倡节能减排的"地球一小时"(Earth Hour)熄灯活 ...

  8. 《跟随丁磊的足迹》35岁之前应做的10件事

    35岁之前应做的10件事 养成个人风格 感情生活要安定 了解和确定适合你发展的行业 树立自己的信誉 知道自己的长处和短处 储备另谋生路的本钱 建立稳固的人际关系网 学会授权他人 懂得适时保持沉默 一定 ...

  9. 白领是升职还是创业揭秘35岁前要做的10件事

    男人.女人都要过三十五岁这堵墙 三十五岁,是一个具有典型意识色彩的年龄-- 改革开放初,干部年轻化标准,界定在35岁以下. 如今,公务员考试的年龄也限制在35岁. 超过35岁,不孕概念增加三成 ,有了 ...

最新文章

  1. DPI — nDPI — Overview
  2. 【给自己的小练习2-线段树】
  3. 异构网络垂直切换算法lte/wimax
  4. 总结】Android辅助功能(一)-AccessibilityEvent的分发
  5. 计算机科学与技术 天涯,计算机科学与技术专业
  6. 将字符串或数字倒序输出
  7. 前端开发者常见的英文单词汇总
  8. 土地数据合集-土地出让数据2020版Globe30土地覆盖数据
  9. 平均增长率不用计算机,【程阳解答】如何用计算器或Excel计算年均增长率?
  10. MIMO技术杂谈(一):鱼与熊掌能否兼得?--浅谈分集与复用的权衡
  11. 音视频技术开发周刊 | 272
  12. Chrome谷歌浏览器兼容性视图设置
  13. python实现账号密码登录
  14. Elastic认证特训营 难点解读04——集群问题排查实战指南
  15. 写了一个新浪微博自动加粉的挂机小工具
  16. CRC16 校验函数
  17. 研发内部控制浅谈(三)(转)
  18. 2021年线上线下融合会议需求增长,Hilton EventReady Hybrid Solutions将启动
  19. Gstreamer中caps的intersect
  20. 英文字母tfrecord文件的制作(一)

热门文章

  1. Stanford CS 144 Note 20 - Playback Buffer
  2. java显示公式_如何让Excel中只显示公式不计算
  3. 当忘记了“WIFI”密码
  4. 如何使用gitHub进行合作开发
  5. 两相四线步进电机时序
  6. 李宁老师:新开公司合伙人股权如何合理安排分配
  7. 【RS-M1系列 - 1】Windows下使用RSView查看点云
  8. 实例解读奈奎斯特稳定判据
  9. 为什么通常在发送数据埋点请求的时候使用的是 1x1 像素的透明 gif 图片
  10. 程序员谨记语录 - java篇