开发有效地 Java微服务需要Effective Java

编写好的软件需要使用正确的工具。选择正确的框架、库和设计“聪明”的系统。因为有这些东西需要学习和担心,很容易忘记另外一件非常重要的事情:明智地选择使用编程语言。在本文中,我想向您介绍Joshua Bloch写的“Effective Java”。

Effective Java – 回到“基础”

随着JVM生态系统比以往任何时候都快,我们很容易忘记编写好的软件不仅仅是正确使用框架。

在编写代码时,我们应该经常考虑一些关键问题。这些东西在很大程度上独立于我们使用的框架。在执行代码评审时,我总是喜欢问这些问题:

代码是否可读且易于理解?

可维护的代码吗?

代码是正确的吗?

它是否遵循公认的最佳实践?

如果您是一位经验丰富的Java开发人员,那么您可能已经具备了帮助您回答这些问题的直觉和知识。但是你怎样才能做得更好呢?

假设您可以让世界上最好的Java开发人员向您解释他们如何回答这些问题?Joshua Bloch, Java Collections Framework 的主要作者之一,当然可以称得上是世界级的。

他还编制了一份清单,列出了在编写Java时值得考虑的90个项目。让他向您解释如何编写有效的Java的前提。

一旦您通读了这些规则并理解了其背后的原因,您就会真正开始感觉自己正在成为Java语言的母语使用者。

那么微服务呢?

在过去两年的职业生涯中,我一直在使用Spring Boot和基于Grails的微服务。这两种都是很好的技术(如果你要求的话,我更喜欢Spring Boot),可以让你快速交付……这两种技术都不能让你免于编写糟糕的代码!

根据我的经验,微服务体系结构是相当困难的。有很多可移动的部分,不同服务之间的集成可能具有挑战性。这只会强调在您的服务中编写绝对可靠的代码的必要性。

由于体系结构的复杂性,您希望服务是简单的。为了使它们变得简单,您不仅需要正确划分域模型,还需要编写干净的可维护代码。

我们从现代微服务框架中获得的速度不应该阻止我们编写高质量的代码。服务的编写速度可能很快,但可能会维持数年。开发人员花在阅读代码上的时间要比编写新代码多得多。

Java不是一种新语言,我们知道好的Java是什么样子的。通过更新“有效的Java”以涵盖Java 9,您可以得到如何编写良好的现代Java的专家建议。

这本书的内容包括

这本书具体包括哪些内容?既然你可以在亚马逊上查找这本书的索引,我觉得我也可以在这里分享它。你会得到12个信息丰富的部分:

引言——好吧,这一条信息不够充分!

创建和销毁对象——这对于任何Java应用程序都是基本和关键的。

所有对象的通用方法——处理Java对象的ABC。

类和接口——Java中OOP实践的良好概述。

泛型——深入研究泛型和多态性。

枚举和注释——解释语言中经常被误解和未充分使用的特性。

Lambdas和Streams——如何处理Java 8的新特性。

方法——解释了使用方法的良好规则。

通用编程-混合通用编程建议。

异常——处理不断混乱的Java异常框架的指南。

并发性——Java并发性和最佳实践的坚实介绍。

序列化——序列化Java对象。

正如你所看到的,书的主题领域非常广泛。它与众不同,尽管如此,它仍能保持深刻而深刻的见解。这是通过挑选特定的项目并深入研究它们来实现的。

举个例子:

44、喜欢使用标准的功能接口。在这里,我们深入了解了Java中的功能接口以及围绕它们的使用的最佳实践。

Java 8中一个有趣的新特性,我认为它没有得到足够广泛的使用和理解。

另外还有89个知识项,每个项都有几页深入的解释和讨论。

总结

Joshua Bloch的《Effective Java》是我读过的关于Java的最好的书之一。虽然总是追求最新的和最令人兴奋的新框架和体系结构,但有时放慢速度是好的。回顾基础知识,确保我们有坚实的基础是件好事。“Effective Java”可以为您提供基础。

原文发布于微信公众号 - 程序你好(codinghello)

原文发表时间:2018-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

编程能力七段论

编程能力七段论 前言   程序员的编程技能随着经验的积累,会逐步提高。我认为编程能力可以分为一些层次。   下面通过两个维度展开编程能力层次模型的讨论。   一...

37550
来自专栏企鹅号快讯

2017年10大主流编程语言最新排行榜出炉

前言 据美国科技公司Gizmodo报道,截至2014年9月24日,全世界采用IT操作系统的设备数量已经达到10亿台,IT推动中国移动互联网进入高速发展期,成为所...

23990
来自专栏阮一峰的网络日志

几种计算机语言的评价(修订版)

编程新手都有一个同样的问题:"我应该学习哪一种语言?"。 《Unix编程艺术》(Eric Raymond著)第十四章,对各种语言进行了评价,正好可以用来回答这个...

41880
来自专栏AI研习社

Github 项目推荐 | Google 大脑神经音频合成器的物理接口 —— Open NSynth Super

Open NSynth Super 是 NSynth 的实验性物理接口,而 NSynth 是 Google 大脑 Megenta 团队开发的一种机器学习算法,用...

15230
来自专栏编程微刊

2017年10大主流编程语言最新排行榜出炉

43530
来自专栏Java学习网

为什么优秀的程序员也是优秀的设计师

为什么优秀的程序员也是优秀的设计师 在高科技行业中,我听过很多伟大的开发人员声称对设计一无所知。他们将设计当作是一个神秘的世界,一个编程世界之外的世界。他们觉得...

23250
来自专栏web前端教室

【Js结构】用vuejs做一个简陋但好使的播放器(二)

上一节写了做一个简陋的播放器,需要的大致的步骤,《【从零开始】用vuejs做一个简陋但好使的播放器(一)》。 其实就是简单的记了一下流水账,这一节咱们来“设计一...

22660
来自专栏idealclover的填坑日常

从零开始的 ubuntu 18.04 重装之路

接下来的日子要开一个大坑 还不是自己给自己开的大坑 因为自己的windows10+ubuntu18.04系统出了一些故障,所以被迫重新安装了ubuntu 18....

82520
来自专栏斑斓

教会你何时定义领域服务

若遵循基于面向对象设计范式的领域驱动设计,并用以应对纷繁复杂的业务逻辑,则强调领域模型的充血设计模型已成为社区不争事实。我将Eric提及的战术设计要素如Enti...

11730
来自专栏JavaQ

码农福利(二)

DUBBO是阿里巴巴的开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务...

33670

扫码关注云+社区

领取腾讯云代金券