美国上市公司,专注Java培训21年

如何更规范的写Java代码


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

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

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

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

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

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

二、使用 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]

三、使用 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)集成。

四、使用 Lombok

是时候向setter/getter、ashcode/equals、以及constructors/toString等样板式代码 (boilerplate code) 说再见了,您只需要一个注解: @Data 就能统统搞定了。Lombok 是一款可以通过简单的注解形式,来帮助开发者简化并消除 Java 代码臃肿的工具 (具体请参见)。它不但能够减少您的代码编写量,还能够帮助您打理那些生成的字节码。

五、编写单元测试

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

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

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

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

六、重构:常见,但也很慢

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

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

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

七、意代码规范

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

推荐阅读:

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

八、定期联络客户,以获取他们的反馈

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

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

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

总结

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

技术人成长不能再单打独斗,要学会与人交流,学会将别人的知识为自己所用。在达内不但有一起成长的小伙伴,还有指引方向的学长,更有经验丰富的老师,都是你的资源。来达内学Java,你的人脉遍布名企。

原文地址:https://#/articles/7-tips-to-write-better-java-code-you-should-know-1


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • Java编程的软件有哪些?
    Java编程的软件有哪些?
    Java编程的软件有哪些?Java强大的功能需要依托在软件工具上实现,所以Java编程开发需要用到编程工具,市面上有哪些Java编程工具呢?那种编程工具好呢?该怎么选择呢?接下来小编罗列了一系列的Java编程开发工具。 详情>>

    2022-04-18

  • 2021年Java全套免费视频教程(持续更新...)
    2021年Java全套免费视频教程(持续更新...)
    2021年Java全套免费视频教程在哪里?零基础学习Java开发还是想要Java技能提成,我们在网上找到的Java视频教程要不就是断断续续的没办法连贯的看,要不就是不够权威,并不是权威机构出品,让自己越学越糊涂,对于自学Java的小伙伴来说简直是灾难,想找一套权威机构的Java视频教程,达内送福利啦!达内讲师专门录制了一套零基础Java从入门到精通的Java学习教程,对于小白自学Java简直是福音。当然针对Java技能的提成,达内老师也录制了一般Java架构师全套视频教程,对于自学Java的小伙伴技能学会学懂,对于技能提升会有不错的效果。 详情>>

    2021-02-24

  • Java有哪些课程?
    Java有哪些课程?
    Java是一种功能丰富且易于学习的编程语言,适用于多种不同的应用领域。目前,许多机构和在线平台都提供了丰富的Java相关课程,课程内容涵盖了Java的基础知识、高级特性以及实际应用等方面。以下是一些Java课程的示例: 详情>>

    2024-03-14

  • java初学者入门教程
    java初学者入门教程
    Java是一种广泛使用的高级编程语言,适用于多种编程范式,包括面向对象编程。下面将为您提供一份适合初学者的Java入门教程: 详情>>

    2024-03-14

  • Java开班时间

    收起