恨死 go 的导出变量命名规则了

2023-08-21 21:25:49 +08:00
 zhwguest

是否包导出居然是靠首字母大小写来区分,写着写着,一个变量想修改为包外可见,居然要修改几十上百个文件。

这是一种什么样的思想....

7883 次点击
所在节点    Go 编程语言
111 条回复
Bazingal
2023-08-22 10:03:41 +08:00
无论你吐槽什么,go 粉都有几十种理由解释为什么要这样设计,先进在哪里
ding2dong
2023-08-22 10:08:35 +08:00
这点确实不爽,什么 IDE 重构,一下子修改几十上百个文件,commit 太美了
MrSheng
2023-08-22 10:08:43 +08:00
@Bazingal #61
这是什么逻辑,有人不喜欢就有人喜欢,这不是很正常?
难道你可以吐槽不喜欢,别人就不能表达喜欢吗?
itskingname
2023-08-22 10:09:38 +08:00
好像是为黑而黑,这种场景本来就很少见。

1. 原来是 private ,你要把它改成 public 。这个时候,原本外面就没有地方使用,你改了以后外面才开始使用。所以没有负担。

2. 原来是 public ,现在改成 private 。如果原来只有少数几个地方使用,改成小写不费力。如果原来有几百个地方使用,你有多大的胆子敢做这样大规模的重构?被几百个地方使用的公共函数,也敢轻易改成私有?
lasuar
2023-08-22 10:10:43 +08:00
“成员改变包可见性真的是很常见的事情”,这是一开始的设计发生了问题,一两次还好,怎么还是常见的呢?

回到帖子本身的问题,如果一个成员已经是私有,怎么会在多处被引用,然后引发楼主所说的“修改几十个文件”。

短短几句话就暴露了水平,别把 V 站当贴吧。
Mexion
2023-08-22 10:11:58 +08:00
@ziyeziye 同一个包难道就不能引用了吗
Mexion
2023-08-22 10:12:36 +08:00
@lasuar 有没有一种可能,同一个包的不同文件也可以引用
troywinter
2023-08-22 10:15:56 +08:00
引用私有成员本身就破坏了封装性
pkoukk
2023-08-22 10:16:51 +08:00
一门语言的基础规则看都不看,直接上来撸?
那 c# 和 java 的默认 class 还是 internal 的呢,也不是 public 啊
zhwguest
2023-08-22 10:20:18 +08:00
@Breacher 定义的地方修改下就行了。不用所有引用的地方修改。
zhwguest
2023-08-22 10:23:06 +08:00
@lasuar 我在包内不能引用么?.... 对不起暴露了水平....
zhwguest
2023-08-22 10:23:53 +08:00
@pkoukk 修改的时候只用修改一处,不用处处修改
codersdp1
2023-08-22 10:27:34 +08:00
建议换成 JAVA 呢
pkoukk
2023-08-22 10:29:05 +08:00
@zhwguest 你和那些语言一样用 struct 不就只用改一处了?要改这么多,难不成你到处写全局变量和全局函数?
codersdp1
2023-08-22 10:29:25 +08:00
修改的时候只用修改一处,不用处处修改
如果是 ide 的话,改变大小写,也只用修改一处。
ziyeziye
2023-08-22 10:30:46 +08:00
@Mexion 注意看 op 的描述,几十上百个文件
codersdp1
2023-08-22 10:31:16 +08:00
zhwguest
2023-08-22 10:41:24 +08:00
@ziyeziye 我不就是说的包内引用么?包外引用是第一次(以前都不可见怎么引用),哪涉及到什么修改,我有什么意见?....
Slurp
2023-08-22 10:45:34 +08:00
😁,Go 大道至简是这样的,大小写确定可见性的魅力,还搁着「改可见性的情况很少」,问就是你写的不对。
Slurp
2023-08-22 10:47:08 +08:00
@codersdp1 😅咋不说 Java 有 IDE 的情况下很简洁。凡事要用 IDE 改善的地方,我只能认为设计的垃圾,可见性和名称挂钩是 sb 到极点的设计。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/967198

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX