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