不愿看到Java开发者再做的10件事
William F. Buckley.Jr 曾经说过,“保守主义者是那些逆着历史潮流不断喊停的人,其他人都不愿意这么做或者对他们这么做显得没有耐性”。虽然我对此了解不多,但是每次看到有Java开发人员做以下事情或者我自己被迫做这些事情时,总想跳出来叫停。
遍历结果集并构造对象
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。
在交易型系统中写PL/SQL
随着时间推移,你系统中的业务逻辑会被逐步迁移到关系数据库中,所有宝贵的设备交易都会迁移到数据库中去。有的人将它们转换为类似COBOL的处理方式,绑定到调用物化视图的触发器中。通过他们调用其它扁平化版本。简而言之,很快你会拥有一个极其难以控制的遗留系统。这对Oracle的投资者而言是好事,但对我们则不然。
编写,调试甚至真正使用Swing应用程序
许多年来我一直觉得自己在GUI代码方面相当差劲,甚至根本不该去碰前端的东西。Java看起来根本不应该和前端有什么关联,Swing效率很低。没错,如果你是开发NetBeans的前Sun员工,又不用担心浏览器,而且还有一堆内存空间可以尽情使用的话,确实可以写出很快的Swing代码来。否则Swing的确很慢。默认情况下Swing弄出一堆跟原生GUI动画一样的图形界面来,让人不爽。此外还有Java的沙箱模型。
强制类型转换
Java泛型并不完美,甚至不是我所首选的 解决方案,有时总会有些边界情况使得泛型无法有效处理。例如,我实在不想再这么做:
Foo bar = (Foo) FooFactory.get("bar");
不幸的是,总有些库没有及时更新,而且遗留代码总是存在。我们只好自作自受,乖乖多写些测试用例、使用 泛型。
用Calendar或Date来做日期计算
用JDK中的Date和Calendar来做复杂的日期和时间计算简直就是浪费生命。内建的类仅仅支持最基本的操作,而且一点也不直观。我们还是用JODA Time这样的先进库来代替吧,除非您还在用x86编译器来写Web应用,因为除此之外你也享受不到用JDK的Date和Calendar之类带来的乐趣。
配置会话(Session)复制
2000年早就过去了,现在所有分布式缓存产品和项目都已用NoSQL的键值对存储方式重构过了。如果需要带状态的客户端,那就用AJAX/Javascript好了,把HttpSession丢一边去吧,这样的话可以大大提高应用程序的可靠性和可扩展性。我们也就不用因为隐藏在深处的一连串异常爆发而半夜起来一路颠簸了。可别误会了,半夜颠簸挺好的,至少我老婆因此买了辆小货车(虽然我更喜欢我那辆Ninja 650机车),不过老实说,是时候换成更好、更快、更聪明的东西了。
自己写排序算法
这是最让人厌恶的,我个人对排序算法并不留意。写排序代码的人要么是不知道Java已经提供了你所需的排序算法(或者自己写了个排序的第三方库文件),要么根本不知道Comparable和Comparator如何工作。赶紧去补充一下功课,以后再也不要自己写排序自寻烦恼了。
自己写链表,栈,队列等
必须承认,写个基本的链表挺容易。Wikipedia有个关于链表的不错的页面(http://en.wikipedia.org/wiki/Linked_list),上面有含代码的内容,完全可以直接复制粘贴,不过何苦要这么做?也许我是挺懒的,不过我更愿意用一个已经通过测试的数据结构,而我也是花过不少功夫才决定这么做的。
自己写池,集合或通用的并发代码
认识Doug Lea大师。崇拜大师,那就支持大师的java.util.concurrent包吧。大师可不是凡人,人家可的以高度并行,因此您想得到的并发问题对策,大师也早已想到。
处理日志框架
你用什么词来形容Commons logging、SLF4J之类?答案是:烂!几年前Sun不肯简单地把Log4J的接口引入JDK就导致了这个问题,Oracle倒是可以把java.util.logging做得好点。我宁可大家都用java.util.logging这个烂标准,也不要有人搞出个伟大的其他日志候选项。这就像有人进行下面的对话:
“我有可口可乐”
“喝百事怎么样?”
“管它呢,反正喝了都胖,有什么区别?”
英文原文:Andrew C. Oliver ,编译:ImportNew - 郑玮
译文链接: http://www.importnew.com/631.html
不愿看到Java开发者再做的10件事的更多相关文章
- 在 PHP 7 中不要做的 10 件事
在 PHP 7 中不要做的 10 件事 1. 不要使用 mysql_ 函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好 ...
- 亲身体验:digitalocean vps能做的10件事
我写过一篇亲身体验:digitalocean和linode评测哪个好,帮助不少网友选购价格便宜性能优异的免备案vps,相信大家对两家产品有所了解.vps的性能和用途远远超过传统的虚拟主机,你拥有独立I ...
- JAVA编程“性能说”(java编程需要做的26件事)
转载于 http://www.csdn.net/article/2012-06-01/2806249 最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过 ...
- 安装完kali linux之后要做的10件事——113p.cn
1.添加国内更新源(可能不是最好的) vim /etc/apt/source.list 科技大学# deb http://mirrors.ustc.edu.cn/kali sana main non- ...
- 【重要】拷贝NIOS II工程后,修改工程前必须要做的10件事
1.拷贝现有工程到新的目录2.打开Quartus II工程文件3.打开NIOS II EDS软件4.切换工作空间到当前的新工程根目录5.在NIOS II EDS软件中将已有的软件工程先删除掉(不要勾选 ...
- 安装 Kali Linux 后需要做的 20 件事
安装 Kali Linux 后需要做的 20 件事 本文含有我觉得有用的每一件事情.本文分为三大部分: 专门针对Kali用户 Kali Linux是来自Debian的一个特殊版本,Kali Linux ...
- 安装 CentOS 7 后必做的七件事
原文 安装 CentOS 7 后必做的七件事 CentOS 是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7.当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后, ...
- 刚安装Fedora 23工作站后,你必须要做的24件事
[51CTO.com快译]Fedora 23工作站版本已发布,此后我们就一直在密切关注它.我们已经为新来读者介绍了一篇安装指南:<Fedora 23工作站版本安装指南> 还有一篇介绍如何从 ...
- 安装Fedora 21工作站后要做的10件事情
教程]安装Fedora 21工作站后要做的10件事情 2015-01-07 13:32 CSDN CODE 作者CSDN CODE 1 755 FedoraGNOMELinux Fedora 21已经 ...
随机推荐
- SSM框架使用-wrong
mybatis手册 1. mybatis 绑定错误 如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement ...
- ZOJ 3787 Access System 水
LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3787 思路:结构体 时间转化为秒记录下最小并且排序就好了 /** ...
- Linux 目录详解 树状目录结构图
1.树状目录结构图 2./目录 目录 描述 / 第一层次结构的根.整个文件系统层次结构的根目录. /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如:cat.ls.cp,和/ ...
- Linux高级编程--04.GDB调试程序(入门概述)
GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试 ...
- LintCode 539: Move Zeroes
终于下决心开始刷题了! 选择LintCode而不是LeetCode主要是因为LintCode操作更顺手,希望能够坚持下去. 还是循序渐进吧,数据结构和算法的东西很久没碰都很生疏了,先找找感觉. 这是一 ...
- AutoESL与Xilinx那些人和事
大年三十,看到Xilinx收购AutoESL的新闻, 顿时觉得今年特别喜庆,于是,连春晚也懒得骂了. 本想立即写一篇博文八卦一番, 怎奈亲朋好友饭局不断,一直拖到今天才动笔. 与一年前Xilinx宣布 ...
- JavaScript数据类型和转换
JavaScript数据类型 1.Boolean(布尔) 布尔:(值类型)var b1=true;//布尔类型 2.Number(数字) 数值:(值类型)var n1=3.1415926;//数值类型 ...
- 简谈CSS 中的 em,rem,px,%
在实际工作中,可能我们用的比较多的是‘%’ 和 px,但是我们也经常看到很多网站和css框架里用的是em 或rem.而‘%’ 和px已经都是比较常见或者说是常用.但是em 和rem 却鲜有使用,一直以 ...
- NEERC2014
NEERC2014 A - Alter Board 题目描述:给出一个\(n \times m\)的国际象棋棋盘,每次选定一个矩形,使得矩形中的每个格子的颜色翻转,求出最少次数的方案使得最终棋盘只有一 ...
- [转载]FFmpeg完美入门[1] - FFmpeg介绍及安装
1 FFmpeg简介 FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件).它提供了录制.转换以及流化音视 频的完整解决方案.它包含了非常先 ...