OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

痛苦的Java程序员


分享到


分类 大话编程   关键字 分享   发布 sasasamoa  1406907689477
注意 转载须保留原文链接,译文链接,作者译者等信息。  

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, abstract, extend等强面向对象关键字的原因)


一个私人请求 

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

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


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

 

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

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


相关: 面向对象的缺陷

原文地址: 点此
社区评论 ( Beta版 )
  • #0 苏轼 1407082899651

    写的好。一些Java程序员张口闭口的设计模式,系统架构,让我感觉厌恶和恶心。其中一些人殚精竭虑苦大仇深的经过层层抽象和设计,最后高出一坨翔,连累了整个团队。

  • #1 李白 1407112419807

    晕哦, 我几年前,一直到现在都觉得JAVA很垃圾,想不到作者和我想的一样。

  • #2 ourjs 1407116558279

    @李白 #1

    @苏轼 #0

    呵,你们的名字很有特色

  • #3 weathered_paper 1407137930886

    @李白 #1

    @苏轼 #0

    马甲么?

  • #4 or 1=1' -- 1407138449020

    只能说一些Java程序员写不好东西,不能说Java很垃圾

  • #5 black_sun 1407165541848

    哈哈哈,真是笑话,一看就是没开发过多大的项目,根本不知道用一些东西的好处,自己的项目没那么大,不需要用,就认为别人也没用那些东西的必要

    这样的人可能会感觉用shell开发大项目也是不错的,简单直接,多好

    只能说,井底之蛙

  • #6 empty_flower 1407218943169

    @black_sun #5

    少年,你编程这么牛B,你妈造吗?

  • #7 shy_river 1407224717510

    @苏轼 #0

    我就认识一个这个人 就是我的前经理。

  • #8 Tyler 1407240555671

    觉得每种语言必有其过人之处,利弊应该分开看。Java 语言是过重,是有过度设计的地方。但很多架构与设计设计方面的概念都是从Java 而来,比如OSGI,再比如依赖注入等。

    同时我觉得真正使用的时候看的不仅是这门语言的优劣,还有市场。 前些日子面试一家12000+人的软件公司,问他们技术经理,为什么不用Nodejs 尝试开发一些项目。 得到的回答是 优秀的js 程序员太难找,同样为后台服务器开发,现在的Java Spring 那套开发者数量相对较大,很容易找到。语言不是说不好淘汰就淘汰,鄙人觉得,取其精华,去其糟粕,才是要点。

    不偏激,不争辩某个语言一定怎样怎样,辩证的看待问题。这是我这段日子以来的最大体会。 : )

  • #9 icy_shape 1407302617840

    代码写的简单直观很重要,否则老化速度会很快。关于OO,我借用本文作者对Java的说法,本身并没有问题,而是用法有问题:)

  • #10 autumn_grass 1407333665729

    @or 1=1' -- #4

    我觉的java很好不过人们走错了方向

  • #11 fragrant_smoke 1407372123004

    作者使用过:C#,C,C + +,Python,Lua,Objective-C,java,Android,很想问精通那门?

  • #12 icy_resonance 1407376265612

    @fragrant_smoke #11

    其实工作十年,没用过几门语言反而不正常,我毕业前三年在搞 .net + 一点喉前端,第四年搞Java, 第5,6年开始专职搞node.js + 前端。

  • #13 泥图网 1407402567079

    从V2过来。OJS简洁大气 速度也不错地说~

  • #14 ourjs 1407404082715

    @泥图网 #13

    Thank you

  • #15 morning_glitter 1407466899524

    不以解决问题为基础的滥用OO,都是在装逼。

  • #16 black_smoke 1407522827821

    额。。。

  • #17 restless_pine 1407823504246

    不管什么语言,别侮辱让你吃饭的家伙,早晚有一天会让你没饭吃。

  • #18 icy_field 1407909559628

    1. 标题

      #

  • #19 cold_river 1408034645692

    拥有1000人开发技术团队,每个人水平参差不齐,我觉得java是最合适不过了。。。

  • #20 江书丝 1410704552276

    手机上好慢

  • #21 杨志强 1412865080167

    Java是世界上最好的变成语言!!!!不服来辩!!!! ----------------------------- (逃...

  • #22 己删除 1412870805626
  • #23 袁主王 1412870836016

    阿里用了多少java

  • #24 卫台父 1412896876977

    过度设计而已,java本身没问题

  • #25 丁主划 1412908631252

    @morning_glitter #15

    这个我非常认同

  • #26 孙悟空 1412915914164

    @袁主王 #23

    所以阿里很垃圾?

  • #27 不要叫我杨过 1446476736511

    何苦纠结语言呢?能够快速稳定的解决实际事务才是重中之重,只有最合适的,没有最好的。C语言,PHP,JAVA都各有春秋。还是动脑做事,而不是纠结哪种语言的好坏吧。如果你真能挑出非常多的毛病,又有方法来处理掉,那你可以开发一种新语言啦。JAVA的开发者也是发现C++有些难用且没那么规范化,才发明出来的!

  • #28 孟出次 1465777555946

    标题党加垃圾,这种文章发来做什么?

  • #29 孟出次 1465777714124

    Javascript 不让你痛苦了吧?为什么微软还要搞个 TypeScript ?对于没有面向对象思想的人,让他去理解面向对象的语言,当然是痛苦的。在我看来, Java 是世界上最美的语言。

  • #30 林业乙 1485380657242

    其实吧,讲道理我接触java也差不多10年,现在在美国工作。其实在美国很多程序员接触过很多语言一般不下5种,前段后端都有,但最后很多人还是选择了java。其实不是因为像作者所说java太冗长,每个人在设计问题。而是很多人的项目不大所以体会不到java的优势。

    有一句话: java开发慢,可如果项目大、复杂的话,用java就不容易乱。硬OO的存在还是有很多意义的。最近开始做一些python和node.js的项目, 确实python轻量级,可是当你的项目大了,你会发现你要去回溯原来的代码的时候python就不这么方便了。而且在大公司很多时候你的项目不光是你的,其他组也会在你的上面架构,这个时候硬OO的通用性就体会出来了。你不可能要求其他的组像你了解你的代码一样,他们最好的办法就是通过这些抽象的Class来架构他们的应用

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 告别Node.js
  2. JavaScript:世界上误解最深的语言
  3. Android即将支持GO语言,从游戏开始
  4. 我不懂Swift
  5. 微软开源TypeScript编绎器
  6. CSS字体大小: em与px、pt、百分比之间的对比
  7. 开源的多行字符串工具: 在JS中整段地写HTML
  8. 树树莓派推出新版本Model B+
  9. 在nginx中使用lua脚本
  10. Google官方支持的NodeJS访问API,提供后台登录授权
  11. 用 OnceAir 搭建个人Git/Svn/照片备份服务器,每年电费7块钱

 相关阅读 - 大话编程
  1. OneBody:开源的社交网络,邮件列表,词典和内容管理系统
  2. 我不懂Swift
  3. 2014 Hangjs 见闻流水账第一天
  4. Linux 桌面的发展之路!
  5. 为什么我不建议你将JavaScript作为主力语言
  6. 静态web的回归
  7. CoffeeScript的箭头为何重要
  8. 什么是最好的编程语言?(怎样才能爱上编程呢?)
  9. 语言们都能干什么
  10. JSON为王,为什么XML会慢慢淡出人们的视野

 关键字 - 分享
  1. C语言用指针模拟按引用传递int整型参数
  2. IE、Chrome、Firefox浏览器默认首页被改成360导航解决办法(删除daohang88.com)跳转
  3. Redis只往zset有序集合添加不存在的数据:关键字索引查询构建+源码分析
  4. redis5.x新特性,Stream流数据类型使用简单教程
  5. 一位自由职业者的分享:程序员怎样找兼职?
  6. 对于现代开发来说,JavaScript就是一种垃圾语言
  7. 我为什么不再用Compass写CSS(缺点分析)
  8. Redis/Python被要求更改Master/Slave程序接口名称和描述
  9. 程序员疑似将MySQL用户名密码上传至Github,导致华柱1.3亿条开房数据泄漏
  10. 从 Node 到 Go:一个粗略的比较—GO平均性能比JavaScript快十几倍

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号