在 V2 等平台常看到“写代码一股 Java 味”的调侃,甚至带有歧视意味,说实话,一直很不理解这种调侃?
1
vincentWdp 3 天前 ![]() 有种三天斋戒, 沐浴焚香, 登泰山之巅, 祭祀天地, 就为了把一枚硬币翻个面的感觉.
|
2
ifsclimbing 3 天前
喜欢过度设计
|
![]() |
3
wxw752 3 天前
|
![]() |
4
codepark 3 天前 ![]() 针对的不是语言么,为啥会到人这一层。
|
5
hwdq0012 3 天前
我的.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; |
6
Bazingal 3 天前
大概是过度面向对象吧
|
![]() |
7
wyntalgeer 3 天前
过度封装过度设计
|
![]() |
9
X0V0X 3 天前 ![]() 我的直观感受就是一个函数能解决的事,非要弄个对象出来,甚至再继承一下
|
![]() |
11
tpeng9240 3 天前
来公司写了几天 python 了,确实比 java 爽,小服务,脚本语言足够了
|
12
niboy 3 天前
我记得搞 spring 的时候,非得搞很多层.....
|
![]() |
13
hidemyself 3 天前
一定要依赖倒置
|
![]() |
15
lelelelelele OP @hwdq0012 这个应该是别人不懂 c#的语法吧?
|
16
hwdq0012 3 天前
@Bazingal 在 c#的角度来看 java 味是没什么语法糖,啰嗦,什么都是类。但其他语言不是只有 class ,java 尝试其他语言的时候会把只有 class 的这种设计套到其他语言上,写出 java 味的代码
|
18
foolishcrab 3 天前 via iPhone
很多人喷不到点上,比如说啥文件夹嵌套之类的,这根本都不是事。
但是过度封装过度抽象确实是广泛存在的问题 |
19
jackwaycn 3 天前
调侃归调侃,歧视的人指定有问题的,哪有完美的语言呢
|
20
hwdq0012 3 天前
@lelelelelele 在 c#的角度来看 java 味是没什么语法糖,啰嗦,什么都是类。但其他语言不是只有 class ,java 尝试其他语言的时候会把只有 class 的这种设计套到其他语言上,写出 java 味的代码
|
![]() |
21
gxm44 3 天前
主要是吐槽过度设计吧
|
![]() |
22
lyxxxh2 3 天前
|
23
yooomu 3 天前 ![]() 其实就是歧视,但这也不是无中生有,我有个同事就喜欢随便写个 service 都要整个接口实现下。我说这样冗余太多,看代码费劲,需要抽象时再用接口重构也不费事,他说我大家都这么写,说我是“众人皆醉我独醒”。那我也只能顺从
|
![]() |
24
wetalk 3 天前 ![]() |
25
crackidz 3 天前
先别管有没有必要,先把模式设计板出来,也别管代码是不是简洁高效易理解。最后要么重新推翻,要么变成屎山~
|
26
errorMsg0xff 3 天前
@yooomu 确实,很多情况其实都不要接口
|
![]() |
27
lelelelelele OP 弱弱问一句,大家对设计模式有什么看法,平时也会用,而且在某些场景下觉得还是挺好用的。
|
![]() |
28
AlexHsu 3 天前 ![]() 我觉得吧 你可以从 Initializer Processor Manager Holder Component Factory Handler Interceptor Filter Listener Adapter Resolver Builder Validator Strategy Context 。。。。这些地方吐槽 java 还有意义
要是从语法糖角度你可以吐槽任何一门语言 包括 c c++ pascal 这些老东西 |
29
yooomu 3 天前 ![]() @lelelelelele #27 是好东西,但其实也是为了弥补 java 语法抽象能力不足的问题。但写业务代码,那么多设计模式,常用、实用的也就策略模式、责任连模式,不然看到那种一个方法几百行的 if else 真的头大。有些人滥用设计模式才是大问题,十几行的核心代码能整出好几个类
|
![]() |
30
aboutier 3 天前
人红是否多,windows 也经常被吐槽, 奈何别人占有率高得可怕。所以才有那么多人嘲笑印度阿三。
|
32
hwdq0012 3 天前
@lyer5 class Adder { int add(int a, int b) { return a + b; } }
这样看起来只有 javaer 觉得更清晰吧 |
![]() |
33
proxytoworld 3 天前
java 味=xxx/com/aaa/bbb/src/main/
创建这样一大串的目录,很抽象 |
![]() |
34
Ghrhrrv146 3 天前
@yooomu #29 设计模式本质就是狗皮膏药,用得越多说明语言/架构问题越大
|
![]() |
35
collery 3 天前
一群写脚本语言的把
|
![]() |
37
wolfie 3 天前
|
38
hwdq0012 3 天前
@lyer5 我哪知道你在回复哪一楼 ,我以为你回复的是#16 楼
a?.b?.c? options chain 不是 c#独有的功能,用过的人一眼懂,而且表达式比那几行 if 不简洁很多,养成习惯更是告别了空指针错误 |
![]() |
39
laikick 3 天前 via iPhone ![]() 是阿里味 国内互联网公司被阿里这家毒瘤老中公司害惨了
|
40
wu00 3 天前 ![]() 面向对象的语言都差不多,java/c# 封装继承多态,你单人项目不做任何设计一把梭也是可以的
多人开发的项目中没有那些”过度设计“中间堆屎可能都堆不动 |
41
seansong 3 天前
总觉得 java 程序员有种说不出来的根深蒂固的思想,而且总以自己语言的思想去思考或者要求别人,另外就是过度设计、框架化太严重,大概就这些吧
|
42
wysnxzm 3 天前
Erich Gamma 在其博士论文中进一步探索设计模式,随后与 Richard Helm 、Ralph Johnson 、John Vlissides (合称“四人帮”,GoF )合作,系统整理了 23 种面向对象设计模式。1994 年,GoF 的经典著作《设计模式:可复用面向对象软件的基础》出版,标志着设计模式在软件工程中的体系化与标准化
Java 语言正式发布于 1995 年 5 月 23 日 |
![]() |
45
tommyzhang 3 天前
是一种无知但又无耻的愚蠢
|
![]() |
47
Maboroshii 3 天前
只会被引用一次函数也要搞几个设计模式封装一下,函数名还特别长,看 java 转 go 同事写的代码,深深的被震撼到。
|
![]() |
50
zizon 3 天前
可能因为即使不懂 Java 对于所谓的 Java 味代码都能一眼看出是干什么的从而指点一下吧,不像 rust 之类的学个三五年才敢写基本的双向链表.
|
![]() |
51
liprais 3 天前
没做过复杂项目呗
|
53
azraeljack 3 天前
@yooomu #23 我自己感觉写接口的话比较好写单测吧,尤其是 services 之间有依赖关系的时候。当然要是不写单测是无所谓了(逃
|
54
Bingchunmoli 3 天前 via Android ![]() @yooomu 主要是还有一个问题不是人上来就会用的,只能从简单的需求过度封装去理解设计模式然后才可以灵活使用到该使用的位置,但是人太多参差不齐有的只是为了用而用(比如简历好看)。那就没办法
|
55
james122333 3 天前 via Android
你凭良心讲这不是很贴切吗 一堆设计模式不过是因应产生 也只有爱写的会觉得设计模式好 事实上 java 也可以不那么写 计算机的世界没有什么是不可以加一层转译的 等遇到了再转译不迟 也不会增加多少複杂度
|
56
james122333 3 天前 via Android
这有个词叫无招胜有招 见机行事以符合上层脑热想到的 整成 java 那样无法应对千变万化的需求的 光封装可视就搞死人了 这也是框架坏处
|
![]() |
57
levelworm 3 天前 via Android
getter setter?
|
58
Leon777 3 天前
没见过复杂的业务逻辑又只会套培训班的模板确实会觉得 java 啰嗦的毫无必要,只有重业务逻辑的项目加经验丰富代码风格优秀的开发人员才能发挥 java 的优势
|
![]() |
59
agagega 3 天前 ![]() Javaer 就偷着乐吧,Java 味起码还是个言之有物的批评。C++这边,任何 C++新闻都能遇到和内容完全无关的评论,如 C++98 哥、不如 Rust 哥、大道至简哥、花里胡哨哥、纯 C 哥,相比之下 Java 黑太有水平了🤣
|
![]() |
60
YYYeung 3 天前
不面向对象,是无法管理多人合作的项目的
面向对象的精髓就是:「对象」就是打工人,随时可以被替换 |
![]() |
62
herozzm 3 天前 via iPhone
因为 javaer 的复杂或者循规蹈矩的绕来绕去的写法为大家所不齿,明明一句能搞定的事情在 java 下面干几十行代码,这不是歧视,而是出于人类趋向简洁明了的工作尊重
|
63
james122333 3 天前 via Android
|
![]() |
64
aptupdate 3 天前 via iPhone
|
![]() |
65
sketcherly 2 天前 via Android
作为一个 javaer ,我有时候也 js 的时候也感觉有 java 的习惯,这大概就是 Java 味吧
|
67
jeesk 2 天前
没啥意思, 99%的人都没什么拿得出手的项目,还天天吐槽, 我基本上当傻子看, 反而我喜欢看尤大吐槽,因为大佬是亲自参与设计的, 亲自参与设计才知道有什么坑。
|
69
nananqujava 2 天前
@yooomu #23 是的 ,我遇到很多选手都这样, 很死板, 感觉是学会一个套路用熟悉了, 这样写就能跑起来, 但没深究为什么这么写,
|
![]() |
71
xiaohupro 2 天前 ![]() 我以前写 Java 也觉得非要搞这么多类和接口干啥,传参几个参数能解决的事情非要封装为一个类,但是当我工作多年后,我理解了,当一个项目比较大时,或者后期拓展的可能性大时这种前期所谓的“Java 味”到时候会让你拓展和维护更加舒服一些,当然了这只是我工作多年后的一些感受,如果项目本身就不大,而且开发完后期大概率不会去拓展什么的哪个顺手用哪个,像我自己的项目有一些就是用 Python 写的,写小程序是用 Node.js 或者云函数写,我觉得还是看项目规模和具体的后期拓展性
|
73
auh 2 天前
八股文就是 java 味儿
|
74
kakki 22 小时 7 分钟前
给每一个类都要设计一个接口,给每一个人找一个爹
|
![]() |
75
Kaiv2 19 小时 31 分钟前
后面出现的语言多了一些语法糖,Java 那几年更新又比较慢。学习了新语言的开发者受不了 Java 的“繁琐”然后就吐槽了起来
|
76
jackOff 12 小时 8 分钟前
java 的基础包难用的一笔
语法又臭又长 占用内存高 似乎做什么开发都是天地大同 spring 起手 安卓原生开发这玩意 gradle 地狱世界闻名 框架太重,配置太多太繁琐 数据库 orm 设计花样太多,应该让这种东西尽可能归于底层,减少程序员乱七八糟的个性发挥 滥用注解,debug 地狱 救了太多垃圾程序员导致屎山代码层出不穷,要感谢培训班和八股文,java 的培训资料是全网最泛滥的 |
![]() |
77
LitterGopher 11 小时 23 分钟前
调侃一下不停正常的么?
比如说到 Python 调侃一下培训班很多, 说到 Rust 调侃一下重写一切, 说到 Golang 调侃一下丑陋的 if err. |
![]() |
78
dragondove 10 小时 45 分钟前
@lelelelelele 设计模式是好东西,好到一些语言专门把特定的模式简化到了语法设计上。但是要避免做啥都上设计模式的思维。java 8 引入 lambda 之后可以考虑部分设计模式使用 lambda 编写来简化代码(比如策略模式可以是 Map<TypeEnum, Function<Input, Output>> strategies;)
设计模式其实在其他语言上也非常普遍,我不知道为什么很多人说的好像设计模式是垃圾一样。 我举几个例子: 1. python 语法上直接支持装饰器模式(函数装饰器),js 也有对应提案 2. 迭代器模式不用多说,增强 for ,现在各种语言支持的函数式 map 、enumerator 之类的东西 3. 观察者模式,响应式库都是这套,流式数据处理也一般需要观察者模式 4. 单例模式,kotlin/scala 直接引入 object 来支持(当然也是为了万物皆对象,摒弃 java 的 static ) 5. 代理模式,kotlin 直接支持 by 委托 7. 建造者和工厂,现在有些语言没有构造器,习惯上手写 builder 的很多 |