跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 初学 go 语言,经常看到有网友说某某 go 代码一股 Java 味
未分類
29 12 月 2020

初学 go 语言,经常看到有网友说某某 go 代码一股 Java 味

初学 go 语言,经常看到有网友说某某 go 代码一股 Java 味

資深大佬 : hihanley 17

小白想问问:

  1. 为什么说他一股 java 味
  2. 什么样的 go 代码是优雅的、好的
大佬有話說 (84)

  • 資深大佬 : Cbdy

    啥是 Java 味?

  • 資深大佬 : learningman

    借宝地一问,上次看到一人说 Go 是云计算的 PHP,略感迷惑,求解

  • 資深大佬 : DEVN

    Java 味咋了?

  • 資深大佬 : Leigg

    什么是好的?只有原则,没有标准,最基本的,按照 go 的代码规范,命名风格来开发。

  • 主 資深大佬 : hihanley

    @Cbdy @DEVN

  • 主 資深大佬 : hihanley

    @Cbdy @DEVN
    我也没太明白,我是 Java,.net core 开发,初学 go,现在甚至连 go demo 都写不出来

  • 資深大佬 : cmdOptionKana

    Java 是咖啡味

  • 資深大佬 : lululau

    典型的 Java 味: 所有的类(类型)全部由一对 IXXX 和 XXXImpl 组成

  • 資深大佬 : TypeError

    https://golang.org/doc/effective_go.html
    https://github.com/uber-go/guide/blob/master/style.md
    go 风格的看这些差不多了

    Java 味我感觉就是过度封装,没高阶函数导致滥用设计模式

  • 資深大佬 : Greatshu

    给 golang 倒杯卡布奇诺

  • 資深大佬 : kidlj

    别写 Factory, Impl, Service, Repository etc. hehe

  • 資深大佬 : undeflife

    golang 这种基本上几乎完全没有 oo 特性的语言,除了文件命名,怎么可能写出 java 味来?

  • 資深大佬 : dilu

    这个网友怕根本不会 java 吧?就随便听说个名词就来了?
    go 更像 c,但是相对比 c 简单。开发成本上更接近 PHP,但是性能比 PHP 好很多。目前 go 还是吹的多,生态感觉还是很一般的。

  • 主 資深大佬 : hihanley

    @TypeError 好的大佬,看完语法我就看看这些

  • 資深大佬 : hoyixi

    接口?链式调用?
    没觉得 go 优雅,我觉得说它优雅,是比 C++优雅~

    个人觉得 Ruby 语法能算得上优雅,而且,许多其它编程语言这几年的演进,都多少有点学 Ruby 语法的意思。但是 Ruby 写出来的代码又太灵活多样。代码成品+语法整体上,还是不够优雅。

    希望有真正优雅的编程语言出现~

  • 資深大佬 : dawn009

    使用多种编程语言的人,通常都会融合从各个语言里学到的好的编程思想,所以看起来“味”就不那么“纯”?

  • 資深大佬 : chenqh

    说他是 php,是说他有些设计真的很恶心,但是火的快呀

  • 資深大佬 : fengchang

    我见过 Java 味儿的 PHP,每个 class 都要带个 interface,class 里的每个属性都要手写 getter 和 setter,再加上一个自己仿的 Hibernate

  • 資深大佬 : littlecreek

    说是 Java 味, 不如说是被各大公司的 Java 编程规范带偏了的 Java 代码 /设计风格.
    前面有人也提过, 比如:
    1. 各种过度设计. (各种 Impl, 各种 Factory, 各种 Manager)
    2. 函数 /变量名字超长
    3. 调用栈超级深, 很多没用的封装
    4. 还有别的补充吗?

  • 資深大佬 : Weixiao0725

    @dilu 不吹,谁去建设生态

  • 資深大佬 : goophy

    比如下面?
    “`
    func (this *Model) Foo() {
    this.Name …..
    ….
    }
    “`

  • 資深大佬 : zjsxwc

    什么是 java 味?
    是
    – 所有文件都有 impl 命名实现与对应的 interface
    – 用 dao 命名数据库操作
    吗?

  • 資深大佬 : hafuhafu

    接口和实现类也算 过渡设计 吗?

  • 資深大佬 : zengming00

    java 味最恶心的地方是各种注解,你不学一遍这个框架都不知道是啥意思

  • 資深大佬 : ly020044

    gopher 大军和 javaer 大军要开始了

  • 資深大佬 : 2379920898

    java 算个屁,我 GO 语言天下第一

  • 資深大佬 : acmore

    当一小撮人不搞无聊的价值观和立场对立的时候
    就是国内计算机真的崛起的时候

  • 資深大佬 : sonxzjw

    人家说的是 [某某 go 代码] ,可能某某用 go 模拟写 java 吧。
    何必在意这些鸡毛蒜皮的事呢

  • 資深大佬 : leeg810312

    @hafuhafu 有时候就是写个项目中用的小工具,不套那些大中型项目的设计模式 1000 行代码差不多了,但是创建的人也整个全套 interface/impl/model/dao/repo/service,多了几倍的文件和代码

  • 資深大佬 : sagaxu

    @hafuhafu 如果绝大多数接口预期只有一个实现,那不是过渡设计是什么?

  • 資深大佬 : FreeEx

    上来先整一个 src 文件夹用于放 go 代码,可能是 Javaer 的风格。
    其实不需要的。

  • 資深大佬 : Winchey

    等我有钱了,一定要买个能闻味道的电脑

  • 資深大佬 : violence123456

    @littlecreek 说的太对了,我今年刚看了 java 和 springboot 就这种感觉。。。

  • 資深大佬 : lewis89

    @FreeEx #31 额.. 资源文件混在一起 大项目几十个文件夹跟项目 还有各种配置 上万个文件 混在一起不是人都傻了。

  • 資深大佬 : cco

    @FreeEx 这没啥吧。src 代表源码,pkg,bin 也不也有么。。

  • 資深大佬 : lewis89

    什么时候连接口跟实现隔离的设计都成过度设计了? 各位软件工程是不是白学了..

  • 資深大佬 : DomonLee

    JAVA 味道到底是什么?

  • 資深大佬 : zhady009

    @sagaxu 只用 jdk proxy 就要接口 没啥毛病

  • 資深大佬 : lower

    记得有个开源项目,用 go 把 Spring 那一套实现了一遍……

  • 資深大佬 : zarte

    javer 写啥语言都爱整 java 那一套特烦人,之前在论坛发过帖子说 php 整 java 那套的,一堆人怼我说是正确做法,维护性高。

  • 資深大佬 : sharpy

    @learningman 当初学 go 的时候,说的是云计算的 c

  • 資深大佬 : lostpg

    @cco 不是一个东西,go 的 src 是 gopath 时代用来存放所有 golang 的源码库的文件夹,和 src 文件夹平级的 pkg 和 bin 分别存放依赖和编译生成。一个源码库里面理论上不出现 src 文件夹,直接以 package 的形式区分。

  • 資深大佬 : guyeu

    主要写 java 也写过 go,真想学一下咋把 go 写出 java 味。。

  • 資深大佬 : anonydmer

    @lewis89 #36, 没写过测试代码都这样,没必要跟他们急

  • 資深大佬 : itskingname

    写 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”)

  • 資深大佬 : namelosw

    Java 味不光在 Go 常见,在哪都常见,典型的就是到处糊设计模式。

    设计模式是语言缺陷的体现,换了个语言很多时候就不需要某些设计模式了。比如有 multi methods 就很少需要 visitor 了,但是有的人还跑过来一个劲地写 visitor,这就是所谓的某种‘味’。

  • 資深大佬 : Suddoo

    直接写 go func 就行了,非要搞个空 struct,然后把方法写到这个空 struct 下

  • 資深大佬 : huayumo

    程序能跑,能赚钱,管他什么语言,管他优雅不优雅,哪怕是中文写的函数呢

  • 資深大佬 : learningman

    @zengming00 都一样,C 的 enum 也恶心

  • 資深大佬 : whyso

    我见过一段变量名以$开头的代码,这是不是 PHP 味的?

  • 資深大佬 : huobazi

    我就喜欢看大家各种抬杠 O(∩_∩)O 哈哈~

  • 資深大佬 : bzw875

    借问一下,macos 没有管理员权限下安装 go lang

  • 資深大佬 : tinyuu

    对 java 是异教徒 ,大家回到 1996 去干掉异教徒,发布 1996 go 。

  • 資深大佬 : baozijun

    @itskingname #44 java 是这样写 String[] a = new String[]{“aaa”,”bbb”,”ccc”};万物皆对象. java 也没有切片,数据直接赋值即可.能不能找点编程语言非共通的点来黑呢.

  • 資深大佬 : baozijun

    @acmore #26 大佬是不屑于讨论这些的.你在这里看到的回复可能(应该)100%都是菜鸟(包括我)

  • 資深大佬 : charlie21

    @itskingname 这个是按行数算 KPI 工作绩效的吧

  • 資深大佬 : dk7952638

    某些人对自己理解不了的事情或驾驭不了的技能都会扣上各种帽子,比如说 XX 味

  • 資深大佬 : decimalbell

    @lewis89 正解

  • 資深大佬 : decimalbell

    @sagaxu 预期只有一个实现的主要原因是不写测试

  • 資深大佬 : bk201

    优雅又不能当饭吃,你搞个私人项目随你怎么优雅

  • 資深大佬 : hantsy

    go 代码一股 PHP 4 味道,为产屎山代码创造了条件。

  • 資深大佬 : no1xsyzy

    @bk201 优雅大概是能当饭吃的,不然代码格式化和动态语言的静态检查也卖不出一年几十刀的价格。

  • 資深大佬 : hantsy

    @bk201 私人代码随便怎么玩都是没有问题的,这是必须的没错。

    问题是,一旦优雅的代码成了工作要求的一部分,你怎么办?写屎山代码容易,写良好设计,结构上优雅的,可维护的代码很难。

    敏捷有一条是产出 Workable,而不是你在机器上 Runnable 。

    如果最基本要求代码优雅,会当成笑柄,我觉得才是问题。

  • 資深大佬 : zxjunz

    java 味儿,就是纯粹的面向对象,没有语法糖导致不得不写一堆又臭又长的无效代码

  • 資深大佬 : bk201

    @hantsy
    @no1xsyzy po 主的优雅可能与 2 位的不一致。也有可能是我理解有问题。我感觉他就是再说语法糖

  • 資深大佬 : hantsy

    @no1xsyzy 优雅的代码当然可以当饭,必须遇到懂的人。就如结婚件事,在农村结婚,80%的人只是搭伙过日子。喜欢混日子的人,只是觉清理代码浪费了时间。

    对于现代软件工程,代码质量检测已经是 CI 和 CD 的一个环节(步骤),包括动态和静态检测,现在有些云工具支持 AI 检测,不仅是一些规则,语法之类,一些啰嗦或者有安全问题,性能问题的代码一样会检测出来。很难想像现在还有人喷这些东西。

  • 資深大佬 : huobazi

    @fengchang 在 php 里看见 getter setter 这下我真受不了

  • 資深大佬 : itskingname

    @baozijun 那可能你遇到的人比较资深。我看到的 Java 工程师都是先创建一个空对象,然后一个一个赋值,可能是我举得例子不好。他们主要是操作 Hash 的时候会这样做。不是数组。

  • 資深大佬 : jasonkayzk

    可能是因为类似于下面的代码写少了:
    if err != nil {
    ….
    }

  • 資深大佬 : huruwo

    鄙视链又来了 好起来了

  • 資深大佬 : zunceng

    我见过 Golang 这样写的
    if “” == varA {
    }

  • 資深大佬 : feast

    所谓“Java 味”实际上就是类似所有 Object 型编程语言的意思

  • 資深大佬 : x02

    @learningman 经常有人吐槽 go 的语法难看。。。

  • 資深大佬 : qiuhang

    要说”味道”的话,其实 go 的 C 语言味和 python 味比较浓,但你要说 java 味的话……那不是语言有 java 味,是人有 java 味。

  • 資深大佬 : jeremaihloo

    上很多人理解错了呀

    这句化的意思是说有人写 golang 写的一股 java 的代码风格和味道

    就好比你写 python 却用 java 那套思想,就不够 pythonic

  • 資深大佬 : yamasa

    @itskingname 马上都 1202 年了,上个 jdk11 用个 Map.of()不过分吧,就算是 8 也有 ImmutableMap.of()啊?你真确定这是语言的问题,不是人的问题?同样的 arr,不就 List.of().toArray()的事儿?

  • 資深大佬 : itskingname

    @yamasa 显然是人的问题。优秀的人切换语言以后,会用新语言的开发方式和风格。平庸的人会继续保留老代码的风格,不愿意学习新的东西。

  • 資深大佬 : yamasa

    @itskingname 即便是 java 自己,这几年的风格也是比较激进的,很多语法糖有了,很多以前泛滥的 dp 也不需要了,fp 也有了(虽然相对残废),reactive 也有了,无非是懒不懒愿不愿意学的问题。再出一个 lts 之后,如果 loom 和 vahalla 都进了,那就更不一样了。
    好多人就是懒加不思考。就比如上面吐槽的 setter 泛滥和 map 一通 put 的问题,不客气一点就是彩笔,什么是 immutable 的什么是 stateful 的分不清,连最基本的封装思想都没有。这锅根本不该 java 背。
    懒人用什么语言写出来都烂,无非是语言本身的门槛不一样。让懒人上 rust 怕是连编译都搞不定。

  • 資深大佬 : JaguarJack

    PHP 是最好的语言!结贴

  • 資深大佬 : YouLMAO

    我的代码都合到 Apache 顶级项目了, 你管我什么味道, 就是大师的味道

  • 資深大佬 : hantsy

    @itskingname 难道不用 Map, List, Set 的 Of 方法。

    https://github.com/hantsy/spring-puzzles/blob/master/programming-models/webmvc-fn/src/main/java/com/example/demo/DemoApplication.java#L106

  • 資深大佬 : yannxia

    一个主要基于 Path 的语言 + 半残废的 OOP,怎么能写出 Java 味,再下想学习

  • 資深大佬 : Desiree

    java 还有味道的吗?

  • 資深大佬 : mamahaha

    go 没有类,没有泛型,你却要以某种技巧模拟出这些东西来,应该就是这个意思。如果模拟 Java 的一些特色,就是 Java 味。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具