初学 go 语言,经常看到有网友说某某 go 代码一股 Java 味
小白想问问:
- 为什么说他一股 java 味
- 什么样的 go 代码是优雅的、好的
小白想问问:
Java 味我感觉就是过度封装,没高阶函数导致滥用设计模式
个人觉得 Ruby 语法能算得上优雅,而且,许多其它编程语言这几年的演进,都多少有点学 Ruby 语法的意思。但是 Ruby 写出来的代码又太灵活多样。代码成品+语法整体上,还是不够优雅。
希望有真正优雅的编程语言出现~
所谓 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”)
设计模式是语言缺陷的体现,换了个语言很多时候就不需要某些设计模式了。比如有 multi methods 就很少需要 visitor 了,但是有的人还跑过来一个劲地写 visitor,这就是所谓的某种‘味’。
问题是,一旦优雅的代码成了工作要求的一部分,你怎么办?写屎山代码容易,写良好设计,结构上优雅的,可维护的代码很难。
敏捷有一条是产出 Workable,而不是你在机器上 Runnable 。
如果最基本要求代码优雅,会当成笑柄,我觉得才是问题。
对于现代软件工程,代码质量检测已经是 CI 和 CD 的一个环节(步骤),包括动态和静态检测,现在有些云工具支持 AI 检测,不仅是一些规则,语法之类,一些啰嗦或者有安全问题,性能问题的代码一样会检测出来。很难想像现在还有人喷这些东西。
这句化的意思是说有人写 golang 写的一股 java 的代码风格和味道
就好比你写 python 却用 java 那套思想,就不够 pythonic
https://github.com/hantsy/spring-puzzles/blob/master/programming-models/webmvc-fn/src/main/java/com/example/demo/DemoApplication.java#L106