主力语言 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 代码一遍,然后再看业务逻辑,真的习惯不了。
怎么破
1
codermagefox 2018-01-03 21:52:17 +08:00
Haskell:"你们先聊,我出去一下."
|
2
cuebyte 2018-01-03 21:54:40 +08:00
实际上这样的声明更符合人类语言习惯
|
3
wangxiaoer OP @cuebyte 刚看到这个回答,感觉很有道理:
为什么 Go 语言把类型放在后面? - 康晓晓的回答 - 知乎 https://www.zhihu.com/question/21656696/answer/29593701 为了满足一些个例,牺牲了整个可读性。 |
4
trys1 2018-01-03 22:00:59 +08:00 via Android
你只因为 go 能编译成 exe 这一个优点就轻易地用 go
你只因为 go 的“类型在后”这一点就轻易地抱怨 想要影响你的决定会不会太轻易了 |
5
wangxiaoer OP @codermagefox 看了这个语言后,我觉得如果老板让我学这个,我宁愿 go die。
|
6
wangxiaoer OP @trys1 那个优点不是一个可有可无的优势,对我吸引力太大了。类型这个已经在尝试接受了,但是过程感觉很艰难而已。学还是要学的
|
7
trys1 2018-01-03 22:03:39 +08:00 via Android
@wangxiaoer 我接触了几种语言后,对 go 最深的感触是相见恨晚
|
8
trys1 2018-01-03 22:06:13 +08:00 via Android
@wangxiaoer 嗯,共勉
|
9
codermagefox 2018-01-03 22:06:41 +08:00
@wangxiaoer #6 主力语言 Java,Js 吗?
Js 中 typeof class 的结果是啥? es6 中 class 的 extend 是怎么实现的? new 一个 obj,再赋值,它的.constructor 指向哪里? 去了解一下,保证你会突然觉得不希望知道这些知识 |
10
kohos 2018-01-03 22:13:55 +08:00
还别说,入门编程语言 VB 还就是类型在后面:Dim i As Integer
|
11
cuebyte 2018-01-03 22:24:19 +08:00
@wangxiaoer 不清楚你在说什么,什么个例?
另外 scala, kotlin, rust, go 都是类型后置。为什么?因为它们都有类型推断啊。变量或不变量的声明放在前面了,次要的类型放在后面。并且其实根本不妨碍阅读,是你自己不习惯。 |
12
gamexg 2018-01-03 23:35:41 +08:00
我很少这么写,大部分都是直接
a:=0 a:=byte(0) var a :=0 |
13
azh7138m 2018-01-03 23:37:07 +08:00
flow 和 ts 不都是写后面吗.......
|
14
mohoumk2 2018-01-03 23:53:12 +08:00 via Android
VB:"你们先聊,我走了"
|
15
mario85 2018-01-04 00:05:21 +08:00 via Android
SQL:你们先聊,我走了
|
16
muziki 2018-01-04 00:25:45 +08:00 via iPhone
@cuebyte rust 有类型变量名分隔符,其他那几个没看过,貌似也有。有分隔符可读性明显高 go 很多
|
17
blless 2018-01-04 00:44:42 +08:00 via Android
有时候类型也巨长的时候其实写在前面也挺恶心的
|
18
rrfeng 2018-01-04 01:02:19 +08:00 via Android
习惯而已,只是你先学了类型前置的语言。
多写写就好了。 |
19
ooops 2018-01-04 01:37:05 +08:00 via iPhone
swift 也放在后面啊,oc 前面,没有觉得很奇怪,大概是有冒号分隔的原因吧
|
20
sunnygaofan 2018-01-04 03:01:47 +08:00 via iPhone
就以 JavaScript 而言,类型约束 typescript 和 flow 都是放后面,这东西喜欢就好。就像习惯了其他语言驼峰命名,到 python 愣是不自觉写成驼峰,花了好几天才改过习惯。还是那句话,在一个社区就得尊重一个社区的规则和文化
|
21
Mutoo 2018-01-04 07:10:41 +08:00
ECMAScript 家族的语言( e.g. javascript, typescript, actionscript, hexo) 就允许这么做,相当于在无类型语言加入了一些限制,可以写出更健壮的代码,也方便语法检查。
var arr:Array = new Array() |
22
zhusimaji 2018-01-04 07:54:54 +08:00 via iPhone
Scala 默默看着楼主
|
23
chen2016 2018-01-04 08:06:08 +08:00 via Android
python 笑而不语
|
24
DT27 2018-01-04 08:23:13 +08:00 1
为啥还要加个 var,直接 int a 才是正道= =、
|
25
wangxiaoer OP |
26
wangxiaoer OP @sunnygaofan 驼峰和下划线我感觉切换起来就是无缝的,因为即使 java 里面以驼峰为主,但是涉及到 sql 字段的一般还是下划线,所以这俩感觉适应程度很低。
|
27
sammo 2018-01-04 09:00:36 +08:00 via iPhone
想跪就跪阿!
|
28
toxicant 2018-01-04 09:16:37 +08:00 via iPhone
去玩 php 啊。 不用声明变量类型
|
29
zorui 2018-01-04 09:34:30 +08:00 via Android
+1 我也是被这写法吓退了。
|
30
0987363 2018-01-04 09:37:57 +08:00 via Android
@wangxiaoer 为毛要这样写。 一般都是 i := 4
|
31
YYYeung 2018-01-04 09:48:45 +08:00
我记得刚学编程的时候,看到 C 语言的变量声明,就觉得类型放前面有点别扭
后来习惯了,再学现在的某些语言,类型放后面,反而又觉得别扭 所以,还是习惯问题吧 |
32
kenybens 2018-01-04 14:04:20 +08:00
Delphi 表示很正常
|