V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding.NET 轻量级社交
开源项目广场
使用帮助
意见反馈
haroldwu
V2EX  ›  Coding

关于程式码中的多层嵌套的函数结尾大小括号,大家是否习惯分开?

  •  
  •   haroldwu · 2016-08-07 16:39:55 +08:00 · 3918 次点击
    这是一个创建于 3061 天前的主题,其中的信息可能已经有所发展或是发生改变。

    多层嵌套时的一个疑惑。网路上的 js 的话多见分开,一个括号(});)一行;在 Lisp 系语言则好像会把 ) 聚集在一起变成 )))。想问问大家其他语言习惯一般为何?为什么呢?

    我平常主要写的是 R 语言,所以用 R 来示范我的想法。(我有找了一下 Google 的 R Style Guide ,内并无特别介绍)。如果有括号自动上色,是不是就不需要这样一个一行了?

    网路上另外有看到说法是:多于五层的嵌套代表程式有问题,最好重构。

    for (x in y) {
      if (x%in% list_g) {
        for (m in q) {
          for (n in p) {
            # some code here
            )
          }
        }
      }
    }
    
    15 条回复    2016-08-09 13:09:32 +08:00
    jeremaihloo
        1
    jeremaihloo  
       2016-08-07 16:58:34 +08:00 via Android
    台湾的朋友你好( ^_^)/
    kn007
        2
    kn007  
       2016-08-07 17:10:36 +08:00
    一般不会混啊,有 sublime 或 notepad++ 有折叠区间,看一眼就知道是从哪到哪,太长,随便点个起始或结束括号,就可以看到结束或起始括号了。
    hxtheone
        3
    hxtheone  
       2016-08-07 17:16:35 +08:00
    个人表示必须分开, 前后括号不换行没缩进完全不知道代码是写在哪个作用域里

    所以写了一段时间 Clojure 简直痛不欲生
    bdbai
        4
    bdbai  
       2016-08-07 17:32:21 +08:00 via Android
    这个节点不太对啊。
    zclzhangcl
        5
    zclzhangcl  
       2016-08-07 17:53:18 +08:00
    欢迎台湾的朋友~
    我是 java 语言的,最好还是将括号分开。虽然 ide 已经有了单击括号自动变色功能。
    我平时的习惯是,嵌套尽量少于三层,多余三层我都会想办法处理一下。譬如你的代码,我会改成这样:

    for (x in y) {
    if (!(x%in% list_g) {
    continue;
    }

    for (m in q) {
    for (n in p) {
    //TODO
    }
    }
    }
    haroldwu
        6
    haroldwu  
    OP
       2016-08-07 18:14:17 +08:00
    @bdbai 啊我不确定是放哪个节点比较好,毕竟我讨论的不是某种特定的语言 :P
    haroldwu
        7
    haroldwu  
    OP
       2016-08-07 18:19:42 +08:00
    @hxtheone 其实我蛮喜欢的,搭配上自动缩排跟 paredit 其实还好 :P 所以用这些强制分开的反而不习惯
    @jeremaihloo 嗨!你好!(为什么知道我来自哪里呢?还是我的用语很台式 Orz )
    @zclzhangcl 我懂了 等于是直接 在 if 就决定掉最外层要不要继续或跳过,然后才继续,代码块不要放在 if 内
    jeremaihloo
        8
    jeremaihloo  
       2016-08-07 18:42:24 +08:00 via Android
    程式,程式码,网路,很明显呀~。~哈哈
    haroldwu
        9
    haroldwu  
    OP
       2016-08-07 19:48:50 +08:00
    @jeremaihloo 哈哈,我都忽略了 :P
    bdbai
        10
    bdbai  
       2016-08-07 23:03:57 +08:00 via Android   ❤️ 1
    @haroldwu 这个 Coding 是大陆一个项目(专案?)托管网站,功能超棒的。 https://coding.net
    你可以发到程序员节点 /go/programmer :)
    jimages
        11
    jimages  
       2016-08-07 23:47:58 +08:00 via Android
    好奇台湾不是用繁体字吗?
    haroldwu
        12
    haroldwu  
    OP
       2016-08-08 03:57:50 +08:00
    @bdbai 原來是那個 Coding ,我誤解了...
    @jimages 用的 RIME 2333 想說來這邊發還是低調一點用簡體字啦
    lxrmido
        13
    lxrmido  
       2016-08-08 09:08:20 +08:00
    分开看起来比较清晰
    MinonHeart
        14
    MinonHeart  
       2016-08-08 09:35:54 +08:00
    每種語言都有自己的風格,個人傾向與使用 IDE 格式化的風格。 JS 是分行寫
    haroldwu
        15
    haroldwu  
    OP
       2016-08-09 13:09:32 +08:00
    @MinonHeart 這個建議不錯!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:17 · PVG 03:17 · LAX 11:17 · JFK 14:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.