首页 » 编写高质量代码:改善Java程序的151个建议 » 编写高质量代码:改善Java程序的151个建议全文在线阅读

《编写高质量代码:改善Java程序的151个建议》建议151:以技术员自律而不是工人

关灯直达底部

技术人员和工人有什么不同呢?这么来说吧,在工厂的流水线上,工人的任务是过来一个零件就把它安装在规定的位置上,而技术人员的任务则是确定零件的尺寸、材料、安装位置等,而且一旦出现问题,技术人员还要能够查明出现问题的原因,并且提出解决办法,我们Javaer也应该是这样的,这就需要我们逐步培养自己,在提高自己技能的同时也提高自己的思维方式,以下20条建议可以逐步把我们向技术人员方向培养。

(1)熟悉工具

军人手中有枪,农民手中有锄头,而我们手里只有Java,这也是我们能够引以为豪的工具,我们应该了解它的使用范围,了解的它的生态系统,了解它的发展趋势——它也可能就是陪伴我们一生的那个工具,也祝愿它是。

(2)使用IDE

在技术领域,不要相信“无刀胜有刀”之类的鬼话——“高手都用记事本或VI开发”,建议选择Eclipse或NetBeans作为开发工具,而且坚持不移地使用它。

(3)坚持编码

不要考虑自己的职位、岗位,只要是Java圈子的生物都应该坚持编码,没有编码,就等于是无源之水,无本之木,何来灵感和灵性?

(4)编码前思考

在坐下来开始编码之前,必须已经完成设计,最低要求是对开发中遇到的问题有清晰的认识,不要在编码中解决问题。

(5)坚持重构

不要相信一次就能写出优秀的代码,这是不现实的,任何优秀的代码、算法都是经过多次重构磨练的,坚信自己的下一个版本或代码更优秀。

(6)多写文档

写注释、写说明、写报告都是对代码或项目的回顾和总结,不仅仅是为了后续的参与人员,同时也是为了整理自己头脑中混乱的思维。

(7)保持程序版本的简单性

一个项目不要保持多个版本,即使有分支也必须定义出项目合并的条件,或者时间约束,或者目标约束,不可任由版本扩散。

(8)做好备份

世界上没有万无一失的事情,不做备份,一旦灾难发生就无挽救的余地了,经常把代码拷贝到不同的主机上备份是一个好习惯,如果能够自动备份那将是一个非常好的方式。

(9)做单元测试

单元测试不仅能增强你的信心,也能给你带来好名声——后续者一看,“哇哦,单元测试写得这么完整,肯定是一个认真、负责的人”。

(10)不要重复发明轮子

在项目中使用已经成熟的工具或框架,而不是自己编写。但是如果想共享一个新的MVC框架,那就尽管去重复发明轮子吧,它不是以交付为目的的,而是以技术研究为目标的。

(11)不要拷贝

当您按下Ctrl+C的时候,问问自己“我在做什么?拷贝是否是唯一能做的?为什么不能重构一下呢”,不要让大段的代码散落在各处,不要做搬运工,不要做拷贝工,要做技术工。

(12)让代码充满灵性

为变量、类、方法起个好听的名字是一个不错的主意,为代码增加必要的注释也是很好的办法,/"One Line/"能解决一个上百行代码的问题,也是一个优秀的实现。

(13)测试自动化

不管是性能测试、单元测试,还是功能测试,想尽办法让它自动化,不要在测试之前手动配置或触发条件,这不够人性化,也同时让代码“汗颜”——本是用来自动执行的,但却被手动设置了条件。

(14)做压力测试

不要相信业务人员“最多200个用户使用”之类的话,把业务人员制定的指标扩大3倍,然后再做压力测试。不要迷信自己的代码很健壮,在高并发时只有上帝知道发生了何事,你又怎么能知道?

(15)“剽窃”不可耻

多看开源代码,学习一下人家是如何编码的,然后经常“剽窃”一下,这也是提高技能的最佳途径,我们不是孔乙己,“剽窃”不可耻。

(16)坚持向敏捷学习

不管“敏捷”与“非敏捷”之间的争论有多激烈,敏捷中的一些思想是非常优秀的,例如TDD测试驱动开发、交流的重要性、循序渐渐开发等。

(17)重里更重面

UI(User Interface)是“面”,Java程序是“里”,客户首先感受到的是“面”,然后才是“里”,要想获得良好的第一印象,那就需要有一个简洁、清晰、便捷的UI,即使“金玉其外败絮其中”,我们也可以继续重构。

(18)分享

“独乐乐”不如“众乐乐”,把自己的代码分享出去收获的不仅仅是赞许,还有自己能力的提升——暴露出自己的Bug,在众目睽睽之下修正之,知耻而后勇也。

(19)刨根问底

有问题不可怕,可怕的是掩盖,或者虚假掩盖,“哦,这个问题呀,加上这个参数就可以解决了”——这不是解决问题的办法,在答案之后加上“是因为……”,这才是解决了问题。

(20)横向扩展

Java要运行在JVM、操作系统上,同时还要与硬件、网络、存储交互,另外要遵循诸如FTP、SMTP、HTTP等协议,还要实现Web Service、RMI、XML-RPC等接口,所以我们必须熟悉相关的知识——扩展知识面,这些都是必须去学习的。

技术人员的武器就是技术,我们Javaer的武器就是Java,如果我们能驰骋沙场,唯我独尊,而且屹立不倒,那就是我们成长为顶尖技术高手的时刻,朝着这一目标奋斗、努力吧,总有一天我们能够与James Gosling(Java的创始人之一)、Rod Johnson(Spring项目的创始人)、Gavin King(Hibernate的创始人)坐而论道,煮酒论Java也!