wangxiaoer
V2EX  ›  问与答

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

  •  
  •   wangxiaoer · Jan 3, 2018 · 5256 views
    This topic created in 3230 days ago, the information mentioned may be changed or developed.

    主力语言 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 代码一遍,然后再看业务逻辑,真的习惯不了。

    怎么破

    32 replies  •  2018-01-04 14:04:20 +08:00
    codermagefox
    codermagefox
    Jan 3, 2018
    1
    Haskell:"你们先聊,我出去一下."
    cuebyte
    cuebyte
    Jan 3, 2018
    2
    实际上这样的声明更符合人类语言习惯
    wangxiaoer
    wangxiaoer
    OP
    Jan 3, 2018
    3
    @cuebyte 刚看到这个回答,感觉很有道理:

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

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

    去了解一下,保证你会突然觉得不希望知道这些知识
    kohos
    kohos
    Jan 3, 2018
    10
    还别说,入门编程语言 VB 还就是类型在后面:Dim i As Integer
    cuebyte
    cuebyte
    Jan 3, 2018
    11
    @wangxiaoer 不清楚你在说什么,什么个例?

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

    a:=0
    a:=byte(0)
    var a :=0
    azh7138m
    azh7138m
    Jan 3, 2018
    13
    flow 和 ts 不都是写后面吗.......
    mohoumk2
    mohoumk2
    Jan 3, 2018 via Android
    14
    VB:"你们先聊,我走了"
    mario85
    mario85
    Jan 4, 2018 via Android
    15
    SQL:你们先聊,我走了
    muziki
    muziki
    Jan 4, 2018 via iPhone
    16
    @cuebyte rust 有类型变量名分隔符,其他那几个没看过,貌似也有。有分隔符可读性明显高 go 很多
    blless
    blless
    Jan 4, 2018 via Android
    17
    有时候类型也巨长的时候其实写在前面也挺恶心的
    rrfeng
    rrfeng
    Jan 4, 2018 via Android
    18
    习惯而已,只是你先学了类型前置的语言。
    多写写就好了。
    ooops
    ooops
    Jan 4, 2018 via iPhone
    19
    swift 也放在后面啊,oc 前面,没有觉得很奇怪,大概是有冒号分隔的原因吧
    sunnygaofan
    sunnygaofan
    Jan 4, 2018 via iPhone
    20
    就以 JavaScript 而言,类型约束 typescript 和 flow 都是放后面,这东西喜欢就好。就像习惯了其他语言驼峰命名,到 python 愣是不自觉写成驼峰,花了好几天才改过习惯。还是那句话,在一个社区就得尊重一个社区的规则和文化
    Mutoo
    Mutoo
    Jan 4, 2018
    21
    ECMAScript 家族的语言( e.g. javascript, typescript, actionscript, hexo) 就允许这么做,相当于在无类型语言加入了一些限制,可以写出更健壮的代码,也方便语法检查。
    var arr:Array = new Array()
    zhusimaji
    zhusimaji
    Jan 4, 2018 via iPhone
    22
    Scala 默默看着楼主
    jko123
    jko123
    Jan 4, 2018 via Android
    23
    python 笑而不语
    naver1
    naver1
    Jan 4, 2018❤️1
    24
    为啥还要加个 var,直接 int a 才是正道= =、
    wangxiaoer
    wangxiaoer
    OP
    Jan 4, 2018
    25
    @muziki 我也这么觉得,感觉满屏看过去有时候会有错觉,比如

    `var a int = 4`

    第一反应是 `int = 4`?
    wangxiaoer
    wangxiaoer
    OP
    Jan 4, 2018
    26
    @sunnygaofan 驼峰和下划线我感觉切换起来就是无缝的,因为即使 java 里面以驼峰为主,但是涉及到 sql 字段的一般还是下划线,所以这俩感觉适应程度很低。
    sammo
    sammo
    Jan 4, 2018 via iPhone
    27
    想跪就跪阿!
    toxicant
    toxicant
    Jan 4, 2018 via iPhone
    28
    去玩 php 啊。 不用声明变量类型
    zorui
    zorui
    Jan 4, 2018 via Android
    29
    +1 我也是被这写法吓退了。
    0987363
    0987363
    Jan 4, 2018 via Android
    30
    @wangxiaoer 为毛要这样写。 一般都是 i := 4
    YYYeung
    YYYeung
    Jan 4, 2018
    31
    我记得刚学编程的时候,看到 C 语言的变量声明,就觉得类型放前面有点别扭
    后来习惯了,再学现在的某些语言,类型放后面,反而又觉得别扭
    所以,还是习惯问题吧
    kenybens
    kenybens
    Jan 4, 2018
    32
    Delphi 表示很正常
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1431 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 10:31 · PVG 18:31 · LAX 02:31 · JFK 05:31
    ♥ Do have faith in what you're doing.