真正的精通Java是种什么样的境界?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了真正的精通Java是种什么样的境界?相关的知识,希望对你有一定的参考价值。

作为一名软件开发者,要追求的,应该是不断地提升自己分析问题把握事物关键点,实事求是地给出切实可行且能“一剑封喉”的优雅解决方案的能力,再提升一点境界,就是要不断提升自己创新的能力(即创造新东西、提出新思路、解决新问题的能力)。

我个人认为,花费大量的时间去"精通"某种语言、某个平台和某些工具,其实是本末倒置。所以,不要追这种"精通”,看上去学富五车很牛逼,其实孔乙己一个罢了。 ----------北京理工大学 计算机学院讲师金旭亮

技术分享图片

不知道什么样算“真正的”精通Java。答主编程不少年了,几年前还在 FLAG 工作时 peer review top 10% 的水平,所以厚颜自称较熟练吧。总结下自己现在的状态。(不限于Java,现在工作用Java + Scala + TypeScript,私人项目用 Java + Kotlin, 之前 c++ 什么也写过一堆,对大多语言都通用)。

还是会查API,会去谷歌/StackOverflow。Java生态系统很大,如果用到第三方库,特别如Spring之类要点极多且每版都会调整。强记API不是做不到,实在是没有意义。需要记得每个库都有哪些主要类,每个类提供哪些方向的功能。具体参数,及表现细节依靠查文档。

知道 JDK 内部大致是怎么实现的,能躲开绝大部分明雷。至于一眼看出Byte Code,抱歉做不到。代码调优靠Profiler,纯手动调优不推荐。

一遍编译无Bug做不到,且没有必要。编译器的最大的作用就是查缺补漏,靠人工去一个个文件排查不是不能,实在是浪费时间。一般写码流程如下:

先定大致方向,写初稿。

觉得写差不多了就开始敲编译,靠报错把最后不编译的部分修完。

编译过了就跑测试,看看有没有Break现有功能。

把现有的break修完开始写新测试。这是找Bug的主要过程,通过测试找Bug比靠脑力排查有效率的多。因为你只要写什么样的情况期待什么样的输出。出现意想不到的结果靠Debugger来排查哪里想叉了。

写测试的同时一般会对API设计有新的想法,依靠已写的测试做一两轮Refactoring。

多写多试多改,靠测试把Bug挤完。当别人还在纠结怎么设计完美API怎么一遍写完无Bug时,我们已经改完几稿趟完一堆暗雷可以提交了。

这流程还有好处是测试比较全,写出的东西不会轻易被别人Break。

会把复杂的问题简单化。经常会有新人向我吐槽,隔壁大神好牛,代码美如画,各种技术吊炸天,可惜看不完全懂。不像你的代码,从头到尾简简单单好像也没什么特别绕的东西,写出来就是能用。有经验的程序员会知道项目里大部分同事都是平均水平,你如果挖空心思写出的牛掰代码,可能很多人看不懂,维护起来一定会出错。如何封装复杂的逻辑,用简单的接口藏起烧脑的内容,是程序员走向成熟的标志。

知道Eco System里都有什么开源选择, 不必要的轮子不要造,该造的时候能提供充分的理由说明为什么现有的开源不能满足,必须自己来。

不迷信大开源/大公司项目。使用第三方库会去看源代码,看哪里写的好哪里写的不理想。哪怕Java语言本身也有不少设计缺陷 (Criticism of Java),参考别人的经验教训,认识到现有工具的不足,在自己设计时避免同样的错误。

同意ClevelandAlto说的,认识语言的优缺点,选择正确的工具。不适合用Java时候不要用Java。

欢迎加入学习交流群569772982,大家一起学习交流。

 

 

以上是关于真正的精通Java是种什么样的境界?的主要内容,如果未能解决你的问题,请参考以下文章

努力提升人生境界

什么是格局境界眼界眼光

java 令人敬畏的境界 - MainActivity(2)

java 令人敬畏的境界 - MainActivity

java 令人敬畏的境界 - 发布

java 令人敬畏的境界 - 作者