痛苦的Java程序员

Kris_zcl 发布于 2014/08/03 10:32
阅读 644
收藏 2

2014年7月21日

Java程序员出了一些问题。我一直在使用Java,到现在已经超过10年了。我也有幸使用过许多其他语言如:C#,C,C + +,Python,Lua,Objective-C - 我认为这对于理解Java程序员究竟出了什么问题起了很大的帮助。很多人说Java是一种糟糕的语言。我不同意。 Java有它的缺点,但我认为,不是Java本身惹恼了人们,而是Java的使用方式。


多年来我遭遇Java代码的最大问题是,每个人都把自己想像成架构师。我在阅读代码的时侯感觉他们不是在解决问题,而是在计划问题。这是一个微妙的区别。有非常多的层次和大量的抽象概念以及样本化代码。面向对向的基因发挥到了极致,这不是那种你一眼就能看出原理的代码,你很难理解这些代码在干什么,你必须深挖,你必须学会一整套让人感觉受虐待和折磨的词汇(“Abstract Adapter Factory”),你必须成为系统的一部分。我看到的几乎所有Java项目都有这些癌症。


在Java的世界里经常发生这种情况是有原因的。Java本身有一部分责任。Java平台的API展现出很多上述问题,这些设计风格和通用准则将开发者们引入歧途。 Java也迫使一种高水平的形式主义和冗长啰嗦的东西在开发者身上显现,以至于你最终慢慢习惯,当其他语言不这样时,你觉得他们像没穿衣服 —— 斯德哥尔摩综合症开始生效。 

(注* 斯德哥尔摩症:是指犯罪的被害者对于犯罪者产生情感,甚至反过来帮助犯罪者的一种情结。这个情感造成被害人对加害人产生好感、依赖心、甚至协助加害人。)


OO热潮也是产生这种疯狂的一部分。越来越多的开发者都意识到这些问题,并重返编程的本质,00其实是很扯淡的。然而,Java是最大程度地扎根在00束服中,而且似乎没有它,Java就没法用了。即使在今天,你还是会发现在大学课程里对于对Java OO的强烈偏好,而且这种偏爱肯定强于5 - 10年前。


但这并没有妨碍Java的流行,在企业中被广泛采纳并使用。让我们坦率地说 - 可能您在荒野中看到的大部分的Java代码,很多都是非常差的开发者写出来的。 


可悲的是,这个问题不仅局限于代码,它已经波及到整个Java生态系统。无论您使用的是Java单元测试框架,依赖性管理工具,原型(mocking)框架,等等,已经没有Java一点原来的气味,你被强奸了。 慢慢地Java程序员已经无法自救了,接下来的事情你懂的,你需要在一个15层深的00框架中,实例化一个个硬绑的 factory。


(注*:这也可能是新税语言Go,在设计时并没有引入class, interface, abstract, extend等强面向对象关键字的原因)


一个私人请求 

今天,我正在学习Gradle,显然它是Android开发来时下最走红的事物。Gradle来自Java的世界,也感染了Java上述的一些问题。正如Tim Bray 最近感叹 

我在Gradle文档中打开一个页面:第50章,依赖管理。它有63个子标题分隔,并被整理成10个小段,这是总共65章(加5个附录)中的第50章。


Android - 真的是当今除了大公司没有人再关心Java的最大原因 - 也就是沿着这条黑暗的夜路。是阅读一整页Android的API文档越来越普遍,但是就是不知道这到底在说什么东西。当然,你最后懂了,你只需要阅读其他17章的内容来理解。什么?你搞不定?你显然缺乏毅力和眼光来构思这一宏伟的,已经建成的大学堂。真失败。 

 

在谷歌,研究Android工作的工程师们实在是太忙了,为解决方案架构宏伟框架,但却不忙于解决实际问题。 

我是一个Android开发者,却被使用Java困扰。这伤透了我的心。


附: 他们为什么说面向对象有问题,探讨面向对象的一些缺陷


转自: http://ourjs.com/detail/53dbb5292ee109090700000c


加载中
0
whaon
whaon
你这样直接转过来真的好么
0
s
sighWang
写这么多不容易
返回顶部
顶部