不习惯 变量在前 类型在后 的语法 怎么破

2018-01-03 21:51:23 +08:00
 wangxiaoer

主力语言 java,js,但是偶尔做点项目感觉这两种代码保护有限,逆向成本太低,看到 go 直接编译成 exe,而且部署也方便,就像去尝试一下。

结果看到那些语法简直想跪:

var a int
var b,c,d int

func Test(a int,b int) string {

}

特别是数组之类:

var m map[string]Vertex
var a [][]int

一眼看过去,这都是啥玩意儿啊。

正常阅读顺序都是从左到右,看到一个变量如果要看类型要目光要转到最右边,变量和类型又都是小写,感觉看代码的过程首先需要人肉 parse 代码一遍,然后再看业务逻辑,真的习惯不了。

怎么破

4276 次点击
所在节点    问与答
32 条回复
codermagefox
2018-01-03 21:52:17 +08:00
Haskell:"你们先聊,我出去一下."
cuebyte
2018-01-03 21:54:40 +08:00
实际上这样的声明更符合人类语言习惯
wangxiaoer
2018-01-03 21:58:46 +08:00
@cuebyte 刚看到这个回答,感觉很有道理:

为什么 Go 语言把类型放在后面? - 康晓晓的回答 - 知乎
https://www.zhihu.com/question/21656696/answer/29593701

为了满足一些个例,牺牲了整个可读性。
trys1
2018-01-03 22:00:59 +08:00
你只因为 go 能编译成 exe 这一个优点就轻易地用 go
你只因为 go 的“类型在后”这一点就轻易地抱怨
想要影响你的决定会不会太轻易了
wangxiaoer
2018-01-03 22:01:48 +08:00
@codermagefox 看了这个语言后,我觉得如果老板让我学这个,我宁愿 go die。
wangxiaoer
2018-01-03 22:03:06 +08:00
@trys1 那个优点不是一个可有可无的优势,对我吸引力太大了。类型这个已经在尝试接受了,但是过程感觉很艰难而已。学还是要学的
trys1
2018-01-03 22:03:39 +08:00
@wangxiaoer 我接触了几种语言后,对 go 最深的感触是相见恨晚
trys1
2018-01-03 22:06:13 +08:00
@wangxiaoer 嗯,共勉
codermagefox
2018-01-03 22:06:41 +08:00
@wangxiaoer #6 主力语言 Java,Js 吗?
Js 中 typeof class 的结果是啥?
es6 中 class 的 extend 是怎么实现的?
new 一个 obj,再赋值,它的.constructor 指向哪里?

去了解一下,保证你会突然觉得不希望知道这些知识
kohos
2018-01-03 22:13:55 +08:00
还别说,入门编程语言 VB 还就是类型在后面:Dim i As Integer
cuebyte
2018-01-03 22:24:19 +08:00
@wangxiaoer 不清楚你在说什么,什么个例?

另外 scala, kotlin, rust, go 都是类型后置。为什么?因为它们都有类型推断啊。变量或不变量的声明放在前面了,次要的类型放在后面。并且其实根本不妨碍阅读,是你自己不习惯。
gamexg
2018-01-03 23:35:41 +08:00
我很少这么写,大部分都是直接

a:=0
a:=byte(0)
var a :=0
azh7138m
2018-01-03 23:37:07 +08:00
flow 和 ts 不都是写后面吗.......
mohoumk2
2018-01-03 23:53:12 +08:00
VB:"你们先聊,我走了"
mario85
2018-01-04 00:05:21 +08:00
SQL:你们先聊,我走了
muziki
2018-01-04 00:25:45 +08:00
@cuebyte rust 有类型变量名分隔符,其他那几个没看过,貌似也有。有分隔符可读性明显高 go 很多
blless
2018-01-04 00:44:42 +08:00
有时候类型也巨长的时候其实写在前面也挺恶心的
rrfeng
2018-01-04 01:02:19 +08:00
习惯而已,只是你先学了类型前置的语言。
多写写就好了。
ooops
2018-01-04 01:37:05 +08:00
swift 也放在后面啊,oc 前面,没有觉得很奇怪,大概是有冒号分隔的原因吧
sunnygaofan
2018-01-04 03:01:47 +08:00
就以 JavaScript 而言,类型约束 typescript 和 flow 都是放后面,这东西喜欢就好。就像习惯了其他语言驼峰命名,到 python 愣是不自觉写成驼峰,花了好几天才改过习惯。还是那句话,在一个社区就得尊重一个社区的规则和文化

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

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

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

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

© 2021 V2EX