《Effective Java》让我们了解到Java的优势,再配置《阿里巴巴Java规约》,做有职业素养的程序员~

简介: 《Effective Java》让我们了解到Java的优势,再配置《阿里巴巴Java规约》,做有职业素养的程序员~

image.png

最近看了一本工具书,是 Effective Java 中文版(第2版)

我用时两个多星期,分别在早起、晚上和周末的时候把这本书细细过了一遍。觉得很有意思。在我的感觉来看,这个是Java语言的《原则》的书。同样的这就说明我看的工具书很少哈哈哈。

这本书不适合入门的时候看,而是使用了Java半年以上、较为熟悉Java生态了之后,去翻看比较合适。我觉得里面提到的很多原则在编程时都应该尽可能遵守。

很多Java规则,读这书之前并不知道的,但可能你一直就是这么做了,也许你会惊讶。

其实这些都是IDE(集成开发环境,Java常用的是IEDA)在无形的帮助我们养成良好的习惯而努力。因为他会通过各种警告提示我们。如果你有很好的信任IDE的话,你将养成了不少好习惯。

对于书中的 78 条规则,这里就不细讲了,因为这里是读书笔记而不是技术分享。

今天想说的是根据这些Java开发规则而想到的一些七七八八的个人的想法。

首先,使用 Java 的人,绝大多数都是程序员,就是所谓的软件工程师。我们在公司里,从事的是代码生产工作,也就是说,我们做的是一项非常严谨的工程,这里的严谨的工程,我们首先是工程师。我的意思是相对的,是相对于科学研究和所谓极客精神。科学研究是不太考虑成本的,是可以试错的。而极客精神,是带有个人主义色彩的,是探究到底的精神。而在我认为的工作中,这些都不是最重要的,最重要的是严谨和规范的工程。

基于这个指导思想,在《Effective Java》里,反复唠叨的是要严格规范写法,要写文档、能够不用复杂的东西就不用。

这里有几个词,严谨和规范就意味着约束和要求,「没有规矩不成方圆」,我们生产的是商业代码,是要经过多人之手的。在这种约束下,个人必须遵从集体,组织的约定是首要的,个人的代码风格必须遵从组织的代码风格,代码注释、命名、通用写法都必须有强一致性。因为只有这样,这项工程的可维护性才高,生命力才够顽强。

还有「工程」一词,这个意味着稳定和成本。什么意思呢?就是在工程里,不允许出现比较激进的东西,必须是被广泛使用了的,有使用基础和较为广泛的使用生态的技术,才能够被引进到工程里面来,因为这意味着维护这个工程的成本比较低,我们不做研究,因为大多数时候的工程代码,都是效率优先。因此常常有「拿来主义」。这个再正常不过了,国内的Java生态,常常就是阿里巴巴有什么开源了什么,其他中小型厂商就看一看能不能为己所用,如果有用、成本不高、能够解决问题的,就直接用起来了。不少厂商也会开源各种各样的组件,然后相互抄袭和借鉴,其实是蛮好的事情。

甚至我觉得,对于一个五年工作经验以下的开发者,都不太需要考虑创新,一板一眼地学习,根据规范来就好了。

二八定律在哪里都可以套用。这个感觉也有点奇怪,这二八定律难道是万精油?到哪都可以扯上两句,容易形成诡辩了。

这一点是在工作过程中感受的,和书中所看到的也类似吧。大概就是20%的技术可以解决80%的需求,因为对于同一类的工程,需求都是类似的,则20%的技术积累就可以了。这样常常导致一个开发者容易陷入自我满足的状态,感觉没有成长性了,大部分事情都可以解决,没有自我学习的动力了。那没办法噢。学习这种事情,就是靠自己的。

这本书的确是一本工具书,不是Java开发者的话也是看不懂。而后面引申出来的想法,大概是可以在工程领域通用的。书翻来翻去都是那样,甚至越学越窄,而思想则越思考越多,并且还挺通用的。这个真是有意思的事情。

相关文章
|
3月前
|
人工智能 前端开发 Java
2025年WebStorm高效Java开发全指南:从配置到实战
WebStorm 2025不仅是一款强大的JavaScript IDE,也全面支持Java开发。本文详解其AI辅助编程、Java特性增强及性能优化,并提供环境配置、高效开发技巧与实战案例,助你打造流畅的全栈开发体验。
300 4
|
5月前
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
527 33
|
4月前
|
资源调度 安全 Java
Java 大数据在智能教育在线实验室设备管理与实验资源优化配置中的应用实践
本文探讨Java大数据技术在智能教育在线实验室设备管理与资源优化中的应用。通过统一接入异构设备、构建四层实时处理管道及安全防护双体系,显著提升设备利用率与实验效率。某“双一流”高校实践显示,设备利用率从41%升至89%,等待时间缩短78%。该方案降低管理成本,为教育数字化转型提供技术支持。
101 1
|
6月前
|
数据采集 监控 Oracle
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
阿里巴巴是 GraalVM 全球顾问委员会的唯一中国代表,阿里云程序语言与编译器团队和可观测团队合作实现了 GraalVM 应用的无侵入可观测能力,并在 ARMS 平台上线了该功能。目前在 GraalVM 24 中发布的是支持 Java agent 的第一步,其余能力将在 GraalVM 的后续版本中陆续发布。
441 22
|
5月前
|
Java 程序员 应用服务中间件
【高薪程序员必看】万字长文拆解Java并发编程!(2 2-2)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
97 0
|
5月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
162 0
|
5月前
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
109 0
|
5月前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
81 0
|
5月前
|
机器学习/深度学习 消息中间件 存储
【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
192 0
|
4月前
|
Java 应用服务中间件 Linux
在Java 12环境中配置和部署Apache Tomcat的步骤。
这段部署Tomcat的冒险旅程充满技术挑战,但同时也像游戏一样充满乐趣。它需要你提前准备,仔细执行,并随时准备解决意外情况。成功后,你就可以在这匹强壮的网络野马上,带着你的Java应用,冲向Web开发的璀璨星空。
135 56