什么是 Java 味,是一种对 javaer 的歧视吗?
在 V2 等平台常看到“写代码一股 Java 味”的调侃,甚至带有歧视意味,说实话,一直很不理解这种调侃?
有种三天斋戒, 沐浴焚香, 登泰山之巅, 祭祀天地, 就为了把一枚硬币翻个面的感觉.
喜欢过度设计
作为一个老 jvaver ,我倒是挺能理解的
针对的不是语言么,为啥会到人这一层。
我的.net 项目被 java 接手后,他来问我
a?.b?.?c 是什么意思,我只好向他解释
if(a!=null)
if(b!=null)
if(c!=null)
return c;
else return null;
esle return null;
else return null;
大概是过度面向对象吧
过度封装过度设计
呃,应该是 a.b != null 、a.b.c != null 和 return a.b.c 吧
我的直观感受就是一个函数能解决的事,非要弄个对象出来,甚至再继承一下
是的,我想说的就是这个,我已经两年没写 c#了(逃
来公司写了几天 python 了,确实比 java 爽,小服务,脚本语言足够了
我记得搞 spring 的时候,非得搞很多层.....
一定要依赖倒置
#5 这个例子跟 java 味没什么关系吧,非要举例,应该是明明 C#有 Properties 了,还非要自己写 get/set
这个应该是别人不懂 c#的语法吧?
在 c#的角度来看 java 味是没什么语法糖,啰嗦,什么都是类。但其他语言不是只有 class ,java 尝试其他语言的时候会把只有 class 的这种设计套到其他语言上,写出 java 味的代码
nullable type 的语法糖
很多人喷不到点上,比如说啥文件夹嵌套之类的,这根本都不是事。
但是过度封装过度抽象确实是广泛存在的问题
调侃归调侃,歧视的人指定有问题的,哪有完美的语言呢
在 c#的角度来看 java 味是没什么语法糖,啰嗦,什么都是类。但其他语言不是只有 class ,java 尝试其他语言的时候会把只有 class 的这种设计套到其他语言上,写出 java 味的代码
主要是吐槽过度设计吧
有 java 味吗?
不过我可没写过 java 。
其实就是歧视,但这也不是无中生有,我有个同事就喜欢随便写个 service 都要整个接口实现下。我说这样冗余太多,看代码费劲,需要抽象时再用接口重构也不费事,他说我大家都这么写,说我是“众人皆醉我独醒”。那我也只能顺从
本质上就是 doNet 、Python 等之流,对他们熟悉的语言,在国内不能占据生态位,从而迁怒于人而已。
至于为什么没能占据 Java 的生态位呢,当然是 Javaer 的问题啦
先别管有没有必要,先把模式设计板出来,也别管代码是不是简洁高效易理解。最后要么重新推翻,要么变成屎山~
确实,很多情况其实都不要接口
弱弱问一句,大家对设计模式有什么看法,平时也会用,而且在某些场景下觉得还是挺好用的。
我觉得吧 你可以从 Initializer Processor Manager Holder Component Factory Handler Interceptor Filter Listener Adapter Resolver Builder Validator Strategy Context 。。。。这些地方吐槽 java 还有意义
要是从语法糖角度你可以吐槽任何一门语言 包括 c c++ pascal 这些老东西
#27 是好东西,但其实也是为了弥补 java 语法抽象能力不足的问题。但写业务代码,那么多设计模式,常用、实用的也就策略模式、责任连模式,不然看到那种一个方法几百行的 if else 真的头大。有些人滥用设计模式才是大问题,十几行的核心代码能整出好几个类
人红是否多,windows 也经常被吐槽, 奈何别人占有率高得可怕。所以才有那么多人嘲笑印度阿三。
难道不是后者更易读清晰?
class Adder { int add(int a, int b) { return a + b; } }
这样看起来只有 javaer 觉得更清晰吧
java 味=xxx/com/aaa/bbb/src/main/
创建这样一大串的目录,很抽象
#29 设计模式本质就是狗皮膏药,用得越多说明语言/架构问题越大
一群写脚本语言的把
我说 a?.b?.?c 不易读,你给我发 Adder ,这不就是无脑黑吗
设计模式是,特定场景最优解之一,并且提供统一了命名。
看不懂设计模式,说明代码理解差。
我哪知道你在回复哪一楼 ,我以为你回复的是#16 楼
a?.b?.c? options chain 不是 c#独有的功能,用过的人一眼懂,而且表达式比那几行 if 不简洁很多,养成习惯更是告别了空指针错误
是阿里味 国内互联网公司被阿里这家毒瘤老中公司害惨了
面向对象的语言都差不多,java/c# 封装继承多态,你单人项目不做任何设计一把梭也是可以的
多人开发的项目中没有那些”过度设计“中间堆屎可能都堆不动
总觉得 java 程序员有种说不出来的根深蒂固的思想,而且总以自己语言的思想去思考或者要求别人,另外就是过度设计、框架化太严重,大概就这些吧
Erich Gamma 在其博士论文中进一步探索设计模式,随后与 Richard Helm 、Ralph Johnson 、John Vlissides (合称“四人帮”,GoF )合作,系统整理了 23 种面向对象设计模式。1994 年,GoF 的经典著作《设计模式:可复用面向对象软件的基础》出版,标志着设计模式在软件工程中的体系化与标准化
Java 语言正式发布于 1995 年 5 月 23 日
#37 对, js 也有, 可选运算符.
js, ,ts, kotlin ,ios swfit 都支持
是一种无知但又无耻的愚蠢
类型都没有,无味
只会被引用一次函数也要搞几个设计模式封装一下,函数名还特别长,看 java 转 go 同事写的代码,深深的被震撼到。
#20
恨不得一个 hello world 都给你整出个 handler provider 就是 java 人了
你是一个文件一个类吗?
可能因为即使不懂 Java 对于所谓的 Java 味代码都能一眼看出是干什么的从而指点一下吧,不像 rust 之类的学个三五年才敢写基本的双向链表.
没做过复杂项目呗
看到讨论 react ui 很热烈,新项目后台管理系统正打算 react 写,leader 说必须用 vue 。 无奈来咨询下各位,Vue 生态都有哪些 UI 库。 UI Li…
目前已经上线了一个 reference 镜像站 ref.niuma.dev/ ,做了一点魔改,更清爽了。 部署的是一个开源的服务 github.com/jaywcjlov…
楼主测试开发,11 月份辞职的,准备开个店子,转头一看朋友们都亏的裤衩子都没了,心想着不行啊,这种光景不适合把钱往出掏,但是天天吃了睡睡看了吃,也没得意思,就寻思着搞点什么东西…