专栏首页java一日一条Java程序员的错

Java程序员的错

Java程序员是有问题的。我使用 Java 编程已经有 10 多年的历史。同时,我还有过大量的使用其它语言开发的经历,比如C#, C, C++, Python, Lua, Objective-C 等等,我认为这些经历在对我认识 Java程序员的问题上起到了巨大的帮助。很多人说 Java 是一种很糟糕的编程语言。我不同意。Java 语言有它自己的缺点,但我想,很多时候,当你看到 Java 在有些地方让人很多人不爽时,那本质上不是 Java 语言的问题,而是它被错误的使用。

这些年来,在我见过的各种 Java 代码中,我发现这最大的问题是,写代码的人痴迷于把自己当作架构师。他们很喜欢这样,在我阅读他们的代码时,经常会发现这些代码与其说是去真正的解决一个问题,事实上更像是为了解决一个问题而规划的一个蓝图模板。这两者之间并不是细微的差别。你会看到继承很深的抽象层和成堆臃肿的样板式的代码。由面向对象而诞生的子类超生现象无以复加。你根本无法一眼看明白、理解这些代码是干什么的——你需要一层层深入挖掘,你需要理解它的整套滥用的术语和折磨人的词汇(“AbstractAdapterFactory”),你必须要把自己当成系统的一部分。我已经记不起来上一次看到一个不是这种情况的 Java 项目是什么时候了。

导致在 Java 王国里代码最终总会变成这样的原因有很多。Java 语言自身要承担一定责任。Java 平台的 API 就是上面说的这些问题的典范,于是,善良的程序员们沿袭标准类库里体现出来的编码规范和风格,将之当作通用的好的编程原则,一下子就误入迷途。Java 语言还会对程序员强迫施加一种上层的形式主义和啰嗦,以至于最后你不得不习惯了这样的风格,当看到其它语言的简洁语法时,反而感觉就像它们都是没穿衣服的裸体——这就是“斯德哥尔摩综合症”(译注:来源于 1973 年发生于此地的一次银行抢劫案中,一个人质浪漫地被她的劫持者吸引住了)。

面向对象的流行部分原因也是这种心理作用造成的。有越来越多的程序员开始退后一步用整体的眼光认识 Java,他们发现,作为一种编程模式,面向对象真的是相当的糟糕。然而,Java 是最大限度的根植于面向对象模式,如果没有面向对象,Java 寸步难行。即使是今天,你仍然能看到大学里的编程课程严重的偏向面向对象,大量的使用 Java 授课,相比起 10 年前、5 年前要普遍的多。

虽然 Java 语言非常的流行,在企业软件开发里被普遍的采用,但这一点都无助于 Java 编程质量的提高。我坦白的说,你在各种企业产品里看到的大量的 Java 代码都是由非常低质量的程序员写出来的。

非常糟糕的是,这些问题并不是只体现在代码上,而是在整个 Java 生态系统上也是如此。不论是你使用的 Java 单元测试工具、依赖关系管理工具,还是模拟框架,即使是很小的 Java 程序,你也逃离不了它周边庞大的系统。Java 程序员无能为力——让他们开发一个小功能,你必然会看到一个继承 15 层的类工厂(factory)的出现。

今天,我在学习 Gradle 框架,很显然是因为最近它在 Android 开发社群里很火。Gradle 来自于 Java 世界,所以它继承了上面我说的所有的 Java 所具有的问题。正像 Tim Bray 最近抱怨的:

“我的浏览器打开的是 Gradle 文档的一页:第 50 章.依赖关系管理。它有 63 个小章节,划归在 10 个一级章节下,这是第 50 章,文档一共有 65 章(包括五节附录)。”

Android——如果说除了那些开发企业软件的人,还有人会在意 Java,那一定是因为它——它沿袭 Java 的老路,走的更远。你会习以为常的发现,在读一页 Android API 文档时,你根本不知道它究竟是在说什么。当然,最终你会弄明白,你需要绕道弄清楚其它 17 个类才行。什么?这让你吃不消?你显然不具备学习 Java 系统 API 的百折不挠的精神。你会变成一个 Loser。

谷歌公司里开发 Android 的工程师忙于构筑伟大的系统框架,没有时间解决真正的问题。

我是一个 Android 程序员,我讨厌 Java。它让我很受伤。

英文原文:Java Developers

译文链接:http://www.techug.com/java-developers

本文分享自微信公众号 - java一日一条(mjx_java)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-11-11

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java 程序员不容错过的开发趋势

    当涉及到代码时,有很多热门话题,并且与时俱进总是潮流所向。如果你想知道如何分离糟粕和精华,那么我们已经准备就绪,只欠各位阅读下文的东风。

    哲洛不闹
  • 2014最热门、最具争议的10个Java话题

    2014年对于Java来说是令人兴奋的一年,万一你不幸错过了在过去一年中Java发生的那些翻天覆地的变化和关于Java的在线争论,也没有关系,接下来将为你呈上2...

    哲洛不闹
  • JAVA要死了吗?不!我来告诉你为什么!

    我们看到“Java 死了吗?” 这个问题,年年都被抛出来,然而至今为止,从所有的第三方统计来看,Java 不仅活的很好,还在保持增长。虽然不断有新的语言面世,T...

    哲洛不闹
  • 【001期】 | JavaSE面试题(一):面向对象

    大家好,我是Java面试题库的提裤姐,今天这篇是JavaSE系列的第一篇,主要总结了面向对象概念中会出现的相关面试题,在后续,会沿着第一篇开篇的知识线路一直总结...

    java进阶架构师
  • 学Java可以做什么?这十大领域任你选!

    Java是时下非常流行的语言,这意味着有很多很多不同的工作可供选择。Java软件工程师入行1-3年,年薪已达到10-15万,而且在IT行业工作经验越多,薪资待遇...

    java架构师
  • 25 个喜欢 Java 的理由

    JetBrains 喜欢所有编程语言,还有所有开发者!2020 年 5 月,Java 迎来了 25 岁生日!因此我们想做点特别的事情,想想我们喜欢 Java 和...

    用户2781897
  • 疯狂软件对Oracle放弃Java EE的看法

    自从Java发展壮大以来,无论是以前的Sun公司,还是后来Oracle公司,一直都无力左右Java的发展:实际上Java的规范制定,都需要通过JCP审核,一些新...

    博文视点Broadview
  • 一个资深Java程序员从码农到大牛的进阶之路

    在未来,我们享受良好的服务的同时,也会为别人提供更良好的服务,需要在技能上还是服务质量上的要求会更高更严格。平时要注意提高自己,不要被时代淘汰掉。

    java架构师
  • ​ 之前写过很多次关于Java学习指南、Java技术路线图的文章。

    之前写过很多次关于Java学习指南、Java技术路线图的文章。但是总还是有小伙伴来问我,Java怎么学,项目怎么做,资源怎么找,真是让人头秃。

    黄小斜
  • 25 年前 Java 诞生,把你对她的热爱大声说出来好吗

    前几天 520 的表白狗粮小伙伴们吃的怎样了呢,我猜有的同学已经成为别人口中撒狗粮的那位;有的可能真的是吃了一整天的狗粮;还有的正在发愤图强,力争给大家来一口大...

    程序员小跃

扫码关注云+社区

领取腾讯云代金券