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

261 天前
 zhwguest

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

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

7310 次点击
所在节点    Go 编程语言
111 条回复
LonnyWong
261 天前
加一个函数不就好了?
lanlanye
261 天前
你可以学习一下写 Python 的方式,全都大写,内部字段随便加个什么下划线之类的,至于封装到底有没有效果全靠自觉。
lhbc
261 天前
```
func Function() {
function()
}
```
tairan2006
261 天前
你没有 IDE 么…
zhwguest
261 天前
ide 就可以不修改文件么?...
函数可以导出结构体的包含关系?...
hsfzxjy
261 天前
用编辑器的重构功能重命名,会舒服很多,vscode 下直接 F2
darksword21
261 天前
lsp 直接 rename 不就可以了
zhwguest
261 天前
@hsfzxjy 我并不是说改名很麻烦,我其实抱怨的是,如果在定义处用 public/private 等定义的话,只需要修改一处就好了。但是现在这个 public/private 伴随着每个使用它的地方。有十几个文件使用了它,就要修改十几个文件。并不是说麻烦,而是说太不优美了。
hsfzxjy
261 天前
确实,这点同意
cmdOptionKana
261 天前
虽然不优雅,但只能算个小缺点,毕竟不是很频繁发生的事情。而且,每种语言要说烦都能找出特别烦的地方,哪有完美哦。
aababc
261 天前
问就是大道至简
mineralsalt
261 天前
我今天也简单看了一下 GO, 确实很多语法很不合理, 完全就是为了和其他语言不同而不同, 根本谈不上优化和好用. 但是交叉编译二进制真的是好用, 真的爽. 如果语法能类似 kotlin 或 ts, 那也会舒服很多啊
zhwguest
261 天前
@cmdOptionKana 其实一个成员改变包可见性真的是很常见的事情。
hallDrawnel
261 天前
用 IDE 很快就改了,问题不大。能很快改掉的问题都不大。就怕那种改不了的。
crysislinux
261 天前
确实不太行,一点小事莫名其妙搞个大 pr
teli
261 天前
如果一个变量,被几十、上百文件引用,这是更大的问题吧
cmdOptionKana
261 天前
@zhwguest 在 Go 里一般习惯尽量用 public ,只有大概率确定不对外可见的才 private 。

因为,不管任何语言,从 public 改成 private 都肯定麻烦,也极少发生。而 private 改成 public 稍常见一点,那么,一开始不确定的你就一律先 public 嘛,从而把需要改的情形减少了 90%,等到稳定之后再看看,看到一些完全没有外部引用的,此时再从 public 改成 private 也不迟。

如果你按照其他编程语言那一套,优先 private ,那肯定麻烦。
zhwguest
261 天前
@teli 包内引用一个变量太多次都有问题了.....这算是....一个 student 的 id 还不准包内几十个文件引用?
zhwguest
261 天前
@cmdOptionKana 你没觉得这样太迁就一个语言了么?就为了一个 Go 的首字母大写,就摒弃了封装性原则,这不正是我吐槽的地方么?
jorneyr
261 天前
Go 特立独行的地方很多,例如 Json 和 Struct 的属性匹配,泛型大家都用 <T> 而 Go 用 [T],错误没有堆栈信息最后还是要出一个包裹的 error ,更不用说各种 if err != nil 的判断了,特别影响业务逻辑的流畅程度。

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

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

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

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

© 2021 V2EX