原文地址:https://dzone.com/articles/7-tips-to-write-better-java-code-you-should-know-1[1]

(本文对原文做了部分修改和一点补充)

在每一位刚入行的程序员的心中,编写程序都是一门神圣的艺术创作。他们无不希望自己的代码作品既简洁清晰,又可读性强,而且还具有一定的容错能力。本文将为您带来八点建议和技巧,以帮助您编写出简洁、干练的 Java 代码。其中的有些可能会让你觉得有些不可思议,但是请相信我,如下的每一条我都亲身实践过的。

1.使用 IntelliJ IDEA 作为您的集成开发环境 (IDE)

虽然我已经使用了六年的 Eclipse 和三年的 NetBeans,而且我仍然偶尔会使用到它们,但是如今的大部分时间,我只使用 IntelliJ IDEA。我并不是想在这里展开有关 IDE 的大讨论,而只是想告诉您,IDEA 能够根据其自有的最佳整合实践标准,持续提示您写出更短、更好、更简洁的代码。

您只需要按下 Alt + Enter 组合键,它就会自动开始为您工作了。在大多数时候,IntelliJ IDEA 能够为您提供各种智能且实用的代码建议。当然,您也可以向它学到不同的编程知识与技巧。

另外,推荐使用 IDEA 的快捷键来加快编码速度, IDEA 有很多非常方便的快捷键和功能,用的多了自然就熟悉了!

为了更好地获取 IDEA 的服务性能,您最好在自己的电脑上采用固态硬盘 (SSD)。就我自己的那台旧式笔记本电脑而言,由于使用的是传统硬盘 (HDD),它已无法顺畅地运行 IDEA 了。因此我个人建议您至少使用一颗 256 GB 大小的固态硬盘。

2.使用 JDK 8 或更高版本

JDK 8 及其更高版本引入了诸如:lambda 表达式 (lambda expression,一种匿名函数)、功能接口、流式接口 (Stream APIs,提供更为可读的源代码实现方法) 等许多新的功能,这些都有助于您写出更简短、更高性能的 Java 代码。

当然,您并不需要去逐一地记住这些功能,因为前面提到的 IDEA 会帮助您在实际编程的过程中,实现这些功能与服务。这也就是为什么我首先向您建议使用 IDEA 的原因。

如果你对 Java8 新特性还不了解的话,可以查看 Java 入门教程:https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/What's%20New%20in%20JDK8/Java8Tutorial.md[2] ;

如果你想深入 Java8 新特性,我可以推荐你一些不错的学习资源:

https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/What's%20New%20in%20JDK8/Java8%E6%95%99%E7%A8%8B%E6%8E%A8%E8%8D%90.md[3]

3.使用 Maven/Gradle

请使用 Maven(一个采用纯 Java 编写的开源项目管理工具,请参见) 或 Gradle(一个基于 Apache Ant 和 Maven 的项目自动化构建工具,请参见) 来管理代码中的依赖关系,以及构建和部署自己的项目。

大部分 Java 后端开发人员都用的是 Maven,或许是因为几乎所有 Java 开发者都熟悉 XML。下面我们来看看 Maven 能为我们做什么。

Maven 能为我们做什么?

•我们可以使用 maven 轻松构建项目。•我们可以使用 maven 的帮助轻松添加项目的 jar 和其他依赖项。•Maven 提供项目信息(日志文档,依赖列表,单元测试报告等)•在更新 JAR 和其他依赖项的中央存储库时,Maven 对项目非常有帮助。•在 Maven 的帮助下,我们可以将任意数量的项目构建为输出类型,如 JAR,WAR 等,而无需执行任何脚本编写。•使用 Maven,我们可以轻松地将我们的项目与源代码控制系统(例如 Subversion 或 Git)集成。

4.使用 Lombok

是时候向setter/getterashcode/equals、以及constructors/toString等样板式代码 (boilerplate code) 说再见了,您只需要一个注解: @Data 就能统统搞定了。

Lombok 是一款可以通过简单的注解形式,来帮助开发者简化并消除 Java 代码臃肿的工具 (具体请参见)。它不但能够减少您的代码编写量,还能够帮助您打理那些生成的字节码。

5.编写单元测试

可测试的代码通常意味着在组织结构上具有更合理、更简洁的代码质量。因为它会驱使您去事先管理好各个类之间的关系、各种方法的访问级别、以及其他方面。我甚至发现:即使是最小的单元测试也能够促进更快、更便捷的开发进程,进而能够让自己写出更加短、平、快的 Java 代码。

当然在现实开发工作中,您总会听到一些诸如“我根本没有时间来编写单元测试”或“项目时间节点将至,不要浪费时间些单元测试了”之类的反对意见。这些听起来貌似很合理,但是根据我的经验,在多数情况下,事实并非如此。

如果您没有时间去编写单元测试,那您是否有更多的时间,去修复代码中那些可见、或不可见的 bug 呢?如果跳过了单元测试,那些仓促完成的代码将无法保证稳定性。特别对于一些新的代码变更而言,您完全无法通过及时的反馈途径,知晓那些新产生的代码是否存在着错误隐患,是否会在将来运行的某个特定场景中产生不可预知的异常问题。

一般而言,Junit 和 TestNG 是两款非常优秀的 Java 应用、及单元测试框架。而我个人则更喜欢使用 TestNG。

6.重构:常见,但也很慢

简洁干练的 Java 程序代码从来不是一蹴而就的,它往往需要您进行反复地琢磨与改进。通过逐行进行代码重构、和运行各种测试用例,您可以确保自己的更改不会破坏既有代码的正确功能。

同样,IDEA 极大地提供了对于代码重构的支持,其中包括提取方法 (extract method,将某个大的函数拆分为多个小函数)、重命名、内联 (inline) 等功能。

当然,如果您对代码重构是什么,以及它的作用不太了解的话,Martin Fowler 的经典著作《重构:改善既有代码的设计 (第 2 版),Refactoring: Improving the Design of Existing Code (2nd Edition)》绝对是一本您必备的参考书。

7.注意代码规范

从学习编程的第一天起就要养成不错的编码习惯,包、类、方法的命名这些是最基本的。

推荐阅读:

•阿里巴巴 Java 开发手册(详尽版)https://github.com/alibaba/p3c/blob/master/阿里巴巴 Java 开发手册(详尽版).pdf[4]•Google Java 编程风格指南:http://www.hawstein.com/posts/google-java-style.html[5]•Effective Java 第三版中文版: https://legacy.gitbook.com/book/jiapengcai/effective-java[6]

8.定期联络客户,以获取他们的反馈

最后一点,可能也是最重要的:客户花钱让您通过编写代码,来解决他们的问题、满足他们的需求、并解决他们的痛点。然而,您可能在不知不觉中花费了太多的时间,去实现自以为重要、却对客户无关紧要的特殊功能,进而忽略了代码整体的健壮性和可维护性。那么,我们怎么才能够尽早地发现该问题呢?请保持与客户经常联系,以尽早地获取他们的反馈。

话说回来,知易行难,即使是富有经验的产品经理也不一定能在较短的时间内领悟需求的真谛,何况是那些满脑子只注重功能实现的“码农”们呢?

因此,一个实用的建议是:如果您不能直接联络到最终用户的话,请尽量与该系统的产品经理、或运维人员进行礼貌、且频繁的沟通。磨刀不误砍柴工,这些时间的投入对于后期时间的节省是绝对值得的。

总结

在过去的多年编程实践和项目应用中,我一直受益于上述八点心得。在此,我希望它们也同样能给您的代码工作带来帮助。祝您编程愉快!

猜你喜欢

1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别!

八点建议助您写出优雅的Java代码相关推荐

  1. 7 点建议助您写出优雅的 Java 代码

    虽然我已经使用了六年的 Eclipse 和三年的 NetBeans,而且我仍然偶尔会使用到它们,但是如今的大部分时间,我只使用 IntelliJ IDEA(请详见).我并不是想在这里展开有关 IDE ...

  2. java代码课程_助你写出优雅的 Java 代码,8 点建议给你收藏

    我越来越担心我作为一个java程序员的未来.恍然间,发现自己在这个行业里已经摸爬滚打了十年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程 ...

  3. 八点建议写出优雅的 Java 代码

    转自:Java技术江湖 在每一位刚入行的程序员的心中,编写程序都是一门神圣的艺术创作.他们无不希望自己的代码作品既简洁清晰,又可读性强,而且还具有一定的容错能力.本文将为您带来八点建议和技巧,以帮助您 ...

  4. 如何写出优雅的java代码

    引用:https://blog.csdn.net/u011700281/article/details/21623919 一.不要使用魔法数字,尽量定义枚举.常量.宏:  我常常见到表示各种状态的数字 ...

  5. php代码如何写得好看,如何写出优雅的PHP代码

    如何写出优雅的PHP代码 导语:PHP是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.下面我们来看看如何写出优雅的PHP代码,希望对大 ...

  6. 请阐述调用Activity有哪几种方法,并写出相关的Java代码

    请阐述调用Activity有哪几种方法,并写出相关的Java代码. 答案:可以采用两种方式调用Activity:显示调用和隐式调用.显示调用直接指定了Activity,代码如下: Intent int ...

  7. 如何写出优雅的 Golang 代码

    Go 语言是一门简单.易学的编程语言,对于有编程背景的工程师来说,学习 Go 语言并写出能够运行的代码并不是一件困难的事情,对于之前有过其他语言经验的开发者来说,写什么语言都像自己学过的语言其实是有问 ...

  8. python如何写代码_如何写出优雅的Python代码?

    有时候你会看到很Cool的Python代码,你惊讶于它的简洁,它的优雅,你不由自主地赞叹:竟然还能这样写.其实,这些优雅的代码都要归功于Python的特性,只要你能掌握这些Pythonic的技巧,你一 ...

  9. JavaScript进阶:如何写出优雅的JavaScript代码

    目录 一.可维护性代码 二.编码规范-可读性 三.变量和函数命名 四.松散耦合 1.解耦HTML和JavaScript 2.解耦CSS和JavaScript 3.解耦应用程序逻辑和事件处理程序 五.编 ...

  10. 如何写出好的Java代码?

    1. 优雅需要付出代价. 从短期利益来看,对某个问题提出优雅的解决方法,似乎可能花你更多的时间.但当它终于能够正确执行并可轻易套用于新案例中,不需要花上数以时计,甚至以天计或以月计的辛苦代价时,你会看 ...

最新文章

  1. php中 可替代curl,laravel-PHP-为什么使用Guzzle代替cURL?
  2. 【深搜】骑士游历(二)
  3. Elasticsearch集群节点配置详解
  4. sql server 日期类型
  5. python 扫描仪_基于Opencv和Python的多选扫描仪
  6. 纽交所再次反转重新推动“摘牌” 三大运营商回应来了
  7. 案例:演示使用beantuils的setProperty()、getProperty()和populate()方法访问JavaBean的属性
  8. 网线(水晶头)制作流程 请附件下载
  9. python语言哪个人创造_Python语言是由哪个人创造的?
  10. /etc/udev/rules.d/10-usbstorage.rules
  11. 学python可以做什么-学会Python后都能做什么?介绍五种Python的实用场景
  12. visualbox 安装 ubuntu 18.04 后续操作:设置ip、换源、安装LAMP、phpmyadmin
  13. JDBC学习(二、操作JDBC步骤,及相关API)
  14. 用C语言进行完数的判断(for循环和数组思想)
  15. 运行kettle-8.2源码
  16. TB6612FNG与直流电机控制教程
  17. ZUCC 正方教务系统 抢课脚本 抢课流程实现
  18. raid ahci模式哪个好_一机多用的RAID磁盘阵列 QNAP TR-004体验测评
  19. error: src refspec master does not match any error: failed to push some refs to ‘https://gitee.com/s
  20. python tensorflow学习笔记(五)矩阵乘法运算

热门文章

  1. 【火炉炼AI】深度学习006-移花接木-用Keras迁移学习提升性能
  2. rocketmq--push消费过程
  3. [转载] 2012年上半年信管网论文复习建议
  4. 广告位管理系统---使用说明
  5. 存储基础知识(八):备份技术(上)
  6. UNIX环境高级编程之第6章:系统数据文件和信息
  7. Illustrator 教程,如何在 Illustrator 中添加图像?
  8. inDesign教程,如何将内容与参考线对齐?
  9. 如何设置蓝牙音频设备与Mac配合使用呢?
  10. 云原生生态周报 Vol. 3 | Java 8 ❤️ Docker