小白想问问:
1
Cbdy 2020-12-16 20:49:34 +08:00
啥是 Java 味?
|
2
learningman 2020-12-16 20:50:31 +08:00
借宝地一问,上次看到一人说 Go 是云计算的 PHP,略感迷惑,求解
|
3
DEVN 2020-12-16 20:51:31 +08:00
Java 味咋了?
|
4
Leigg 2020-12-16 20:55:10 +08:00 via iPhone
什么是好的?只有原则,没有标准,最基本的,按照 go 的代码规范,命名风格来开发。
|
6
hihanley OP |
7
cmdOptionKana 2020-12-16 21:18:31 +08:00 2
Java 是咖啡味
|
8
lululau 2020-12-16 21:24:30 +08:00 2
典型的 Java 味: 所有的类(类型)全部由一对 IXXX 和 XXXImpl 组成
|
9
TypeError 2020-12-16 21:26:33 +08:00 via Android 2
https://golang.org/doc/effective_go.html
https://github.com/uber-go/guide/blob/master/style.md go 风格的看这些差不多了 Java 味我感觉就是过度封装,没高阶函数导致滥用设计模式 |
10
Greatshu 2020-12-16 21:26:54 +08:00
给 golang 倒杯卡布奇诺
|
11
kidlj 2020-12-16 21:47:13 +08:00 1
别写 Factory, Impl, Service, Repository etc. hehe
|
12
undeflife 2020-12-16 21:49:21 +08:00
golang 这种基本上几乎完全没有 oo 特性的语言,除了文件命名,怎么可能写出 java 味来?
|
13
dilu 2020-12-16 21:52:14 +08:00 via Android
这个网友怕根本不会 java 吧?就随便听说个名词就来了?
go 更像 c,但是相对比 c 简单。开发成本上更接近 PHP,但是性能比 PHP 好很多。目前 go 还是吹的多,生态感觉还是很一般的。 |
15
hoyixi 2020-12-17 00:59:09 +08:00
接口?链式调用?
没觉得 go 优雅,我觉得说它优雅,是比 C++优雅~ 个人觉得 Ruby 语法能算得上优雅,而且,许多其它编程语言这几年的演进,都多少有点学 Ruby 语法的意思。但是 Ruby 写出来的代码又太灵活多样。代码成品+语法整体上,还是不够优雅。 希望有真正优雅的编程语言出现~ |
16
dawn009 2020-12-17 01:30:30 +08:00 2
使用多种编程语言的人,通常都会融合从各个语言里学到的好的编程思想,所以看起来“味”就不那么“纯”?
|
17
chenqh 2020-12-17 03:05:58 +08:00
说他是 php,是说他有些设计真的很恶心,但是火的快呀
|
18
fengchang 2020-12-17 04:19:36 +08:00
我见过 Java 味儿的 PHP,每个 class 都要带个 interface,class 里的每个属性都要手写 getter 和 setter,再加上一个自己仿的 Hibernate
|
19
littlecreek 2020-12-17 04:26:59 +08:00 6
说是 Java 味, 不如说是被各大公司的 Java 编程规范带偏了的 Java 代码 /设计风格.
前面有人也提过, 比如: 1. 各种过度设计. (各种 Impl, 各种 Factory, 各种 Manager) 2. 函数 /变量名字超长 3. 调用栈超级深, 很多没用的封装 4. 还有别的补充吗? |
20
Weixiao0725 2020-12-17 06:31:24 +08:00
@dilu 不吹,谁去建设生态
|
21
goophy 2020-12-17 07:31:53 +08:00 via iPhone
|
22
zjsxwc 2020-12-17 08:07:50 +08:00 via Android
什么是 java 味?
是 - 所有文件都有 impl 命名实现与对应的 interface - 用 dao 命名数据库操作 吗? |
23
hafuhafu 2020-12-17 08:19:34 +08:00 1
接口和实现类也算 过渡设计 吗?
|
24
zengming00 2020-12-17 08:37:55 +08:00
java 味最恶心的地方是各种注解,你不学一遍这个框架都不知道是啥意思
|
25
ly020044 2020-12-17 08:42:21 +08:00
gopher 大军和 javaer 大军要开始了
|
26
2379920898 2020-12-17 08:54:08 +08:00
java 算个屁,我 GO 语言天下第一
|
27
acmore 2020-12-17 08:54:47 +08:00
当一小撮人不搞无聊的价值观和立场对立的时候
就是国内计算机真的崛起的时候 |
28
sonxzjw 2020-12-17 09:00:18 +08:00
人家说的是 [某某 go 代码] ,可能某某用 go 模拟写 java 吧。
何必在意这些鸡毛蒜皮的事呢 |
29
leeg810312 2020-12-17 09:01:06 +08:00 via Android
@hafuhafu 有时候就是写个项目中用的小工具,不套那些大中型项目的设计模式 1000 行代码差不多了,但是创建的人也整个全套 interface/impl/model/dao/repo/service,多了几倍的文件和代码
|
31
FreeEx 2020-12-17 09:21:56 +08:00 2
上来先整一个 src 文件夹用于放 go 代码,可能是 Javaer 的风格。
其实不需要的。 |
32
Winchey 2020-12-17 09:23:26 +08:00
等我有钱了,一定要买个能闻味道的电脑
|
33
violence123456 2020-12-17 09:32:22 +08:00 via iPhone
@littlecreek 说的太对了,我今年刚看了 java 和 springboot 就这种感觉。。。
|
34
lewis89 2020-12-17 09:42:03 +08:00
@FreeEx #31 额.. 资源文件混在一起 大项目几十个文件夹跟项目 还有各种配置 上万个文件 混在一起不是人都傻了。
|
36
lewis89 2020-12-17 09:44:02 +08:00
什么时候连接口跟实现隔离的设计都成过度设计了? 各位软件工程是不是白学了..
|
37
DomonLee 2020-12-17 09:44:54 +08:00
JAVA 味道到底是什么?
|
39
lower 2020-12-17 09:55:41 +08:00
记得有个开源项目,用 go 把 Spring 那一套实现了一遍……
|
40
zarte 2020-12-17 09:56:05 +08:00
javer 写啥语言都爱整 java 那一套特烦人,之前在论坛发过帖子说 php 整 java 那套的,一堆人怼我说是正确做法,维护性高。
|
41
sharpy 2020-12-17 09:58:52 +08:00
@learningman 当初学 go 的时候,说的是云计算的 c
|
42
lostpg 2020-12-17 10:11:40 +08:00 via Android
@cco 不是一个东西,go 的 src 是 gopath 时代用来存放所有 golang 的源码库的文件夹,和 src 文件夹平级的 pkg 和 bin 分别存放依赖和编译生成。一个源码库里面理论上不出现 src 文件夹,直接以 package 的形式区分。
|
43
guyeu 2020-12-17 10:17:07 +08:00
主要写 java 也写过 go,真想学一下咋把 go 写出 java 味。。
|
45
itskingname 2020-12-17 10:31:17 +08:00 3
写 Java 的人转 Python,写出来的 Python 代码也是一股浓浓的 Java 味。
所谓 Java 味,就是明明一两个文件就能写完的逻辑,非要嵌套十几而是层文件夹,例如,你发下有一个人写的 Go 代码是这样的: com/xxx/yyy/zzz/mm/impl/abc.go com/aaa/bbb/ccc/ddd/eee/fff/xyz.go 这就叫做 Java 味。 还有一种是大量使用 get/set 。当我们用 Go 初始化一个已知数据的数据的时候,一般这样写: a := []string{"aaa", "bbb", "ccc"} 但是 Java 味会这样写: var a []string a = append(a, "aaa") a = append(a, "bbb") a = append(a, "ccc") |
46
namelosw 2020-12-17 10:54:21 +08:00 via iPad
Java 味不光在 Go 常见,在哪都常见,典型的就是到处糊设计模式。
设计模式是语言缺陷的体现,换了个语言很多时候就不需要某些设计模式了。比如有 multi methods 就很少需要 visitor 了,但是有的人还跑过来一个劲地写 visitor,这就是所谓的某种‘味’。 |
47
Suddoo 2020-12-17 10:59:50 +08:00
直接写 go func 就行了,非要搞个空 struct,然后把方法写到这个空 struct 下
|
48
huayumo 2020-12-17 11:10:26 +08:00
程序能跑,能赚钱,管他什么语言,管他优雅不优雅,哪怕是中文写的函数呢
|
49
learningman 2020-12-17 11:13:36 +08:00
@zengming00 都一样,C 的 enum 也恶心
|
50
whyso 2020-12-17 11:21:21 +08:00
我见过一段变量名以$开头的代码,这是不是 PHP 味的?
|
51
huobazi 2020-12-17 11:23:28 +08:00
我就喜欢看大家各种抬杠 O(∩_∩)O 哈哈~
|
52
bzw875 2020-12-17 11:24:17 +08:00
借楼问一下,macos 没有管理员权限下安装 go lang
|
53
tinyuu 2020-12-17 11:27:42 +08:00
对 java 是异教徒 ,大家回到 1996 去干掉异教徒,发布 1996 go 。
|
54
baozijun 2020-12-17 11:38:14 +08:00
@itskingname #44 java 是这样写 String[] a = new String[]{"aaa","bbb","ccc"};万物皆对象. java 也没有切片,数据直接赋值即可.能不能找点编程语言非共通的点来黑呢.
|
56
charlie21 2020-12-17 12:18:15 +08:00
@itskingname 这个是按行数算 KPI 工作绩效的吧
|
57
dk7952638 2020-12-17 12:52:32 +08:00
某些人对自己理解不了的事情或驾驭不了的技能都会扣上各种帽子,比如说 XX 味
|
58
decimalbell 2020-12-17 13:01:59 +08:00
@lewis89 正解
|
59
decimalbell 2020-12-17 13:04:07 +08:00
@sagaxu 预期只有一个实现的主要原因是不写测试
|
60
bk201 2020-12-17 13:05:58 +08:00
优雅又不能当饭吃,你搞个私人项目随你怎么优雅
|
61
hantsy 2020-12-17 13:11:07 +08:00
go 代码一股 PHP 4 味道,为产屎山代码创造了条件。
|
63
hantsy 2020-12-17 13:16:34 +08:00 1
@bk201 私人代码随便怎么玩都是没有问题的,这是必须的没错。
问题是,一旦优雅的代码成了工作要求的一部分,你怎么办?写屎山代码容易,写良好设计,结构上优雅的,可维护的代码很难。 敏捷有一条是产出 Workable,而不是你在机器上 Runnable 。 如果最基本要求代码优雅,会当成笑柄,我觉得才是问题。 |
64
zxjunz 2020-12-17 13:24:42 +08:00 via Android
java 味儿,就是纯粹的面向对象,没有语法糖导致不得不写一堆又臭又长的无效代码
|
66
hantsy 2020-12-17 13:25:00 +08:00 1
@no1xsyzy 优雅的代码当然可以当饭,必须遇到懂的人。就如结婚件事,在农村结婚,80%的人只是搭伙过日子。喜欢混日子的人,只是觉清理代码浪费了时间。
对于现代软件工程,代码质量检测已经是 CI 和 CD 的一个环节(步骤),包括动态和静态检测,现在有些云工具支持 AI 检测,不仅是一些规则,语法之类,一些啰嗦或者有安全问题,性能问题的代码一样会检测出来。很难想像现在还有人喷这些东西。 |
68
itskingname 2020-12-17 13:47:15 +08:00
@baozijun 那可能你遇到的人比较资深。我看到的 Java 工程师都是先创建一个空对象,然后一个一个赋值,可能是我举得例子不好。他们主要是操作 Hash 的时候会这样做。不是数组。
|
69
jasonkayzk 2020-12-17 13:55:20 +08:00 2
可能是因为类似于下面的代码写少了:
if err != nil { .... } |
70
huruwo 2020-12-17 14:01:56 +08:00
鄙视链又来了 好起来了
|
71
zunceng 2020-12-17 14:07:31 +08:00 1
我见过 Golang 这样写的
if "" == varA { } |
72
feast 2020-12-17 14:17:25 +08:00
所谓“Java 味”实际上就是类似所有 Object 型编程语言的意思
|
73
z4oSkDNGGC2svsix 2020-12-17 15:13:35 +08:00
@learningman 经常有人吐槽 go 的语法难看。。。
|
74
qiuhang 2020-12-17 15:31:27 +08:00
要说"味道"的话,其实 go 的 C 语言味和 python 味比较浓,但你要说 java 味的话......那不是语言有 java 味,是人有 java 味。
|
75
jeremaihloo 2020-12-17 15:38:46 +08:00 1
楼上很多人理解错了呀
这句化的意思是说有人写 golang 写的一股 java 的代码风格和味道 就好比你写 python 却用 java 那套思想,就不够 pythonic |
76
yamasa 2020-12-17 17:34:46 +08:00
@itskingname 马上都 1202 年了,上个 jdk11 用个 Map.of()不过分吧,就算是 8 也有 ImmutableMap.of()啊?你真确定这是语言的问题,不是人的问题?同样的 arr,不就 List.of().toArray()的事儿?
|
77
itskingname 2020-12-17 18:30:09 +08:00 1
@yamasa 显然是人的问题。优秀的人切换语言以后,会用新语言的开发方式和风格。平庸的人会继续保留老代码的风格,不愿意学习新的东西。
|
78
yamasa 2020-12-17 18:39:49 +08:00 via Android
@itskingname 即便是 java 自己,这几年的风格也是比较激进的,很多语法糖有了,很多以前泛滥的 dp 也不需要了,fp 也有了(虽然相对残废),reactive 也有了,无非是懒不懒愿不愿意学的问题。再出一个 lts 之后,如果 loom 和 vahalla 都进了,那就更不一样了。
好多人就是懒加不思考。就比如上面吐槽的 setter 泛滥和 map 一通 put 的问题,不客气一点就是彩笔,什么是 immutable 的什么是 stateful 的分不清,连最基本的封装思想都没有。这锅根本不该 java 背。 懒人用什么语言写出来都烂,无非是语言本身的门槛不一样。让懒人上 rust 怕是连编译都搞不定。 |
79
JaguarJack 2020-12-17 18:52:57 +08:00
PHP 是最好的语言!结贴
|
80
YouLMAO 2020-12-17 20:33:57 +08:00
我的代码都合到 Apache 顶级项目了, 你管我什么味道, 就是大师的味道
|
81
hantsy 2020-12-17 20:49:09 +08:00
|
82
yannxia 2020-12-17 21:18:47 +08:00
一个主要基于 Path 的语言 + 半残废的 OOP,怎么能写出 Java 味,再下想学习
|
83
Desiree 2020-12-17 21:58:01 +08:00
java 还有味道的吗?
|
84
mamahaha 2020-12-18 11:02:11 +08:00 2
go 没有类,没有泛型,你却要以某种技巧模拟出这些东西来,应该就是这个意思。如果模拟 Java 的一些特色,就是 Java 味。
|
85
darklowly 2021-05-11 15:31:37 +08:00
楼上的说的差不多了,补充一点:
在项目模块分解的时候,go 语言一般按功能分,java 一般按类型分。 例如,java 的 model 包含项目中所有的模型。golang 一般是按用户模块,交易模块这么分。 |