V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
UtopiaCHN
V2EX  ›  程序员

有没有和我一样喜欢把大括号上下对齐的?尤其是 if 语句

  •  
  •   UtopiaCHN · 2016-01-29 14:25:17 +08:00 · 13909 次点击
    这是一个创建于 3254 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2016-01-29 17:00:55 +08:00

    风格一:

    if ( ... )
    {
    ...
    }
    else
    {
    ...
    }

    风格二:

    if ( ... ){
    ...
    }else{
    ...
    }

    你们不觉得第一种的代码可读性更好吗?尤其是多层嵌套的时候。

    112 条回复    2016-02-13 17:46:46 +08:00
    1  2  
    bdbai
        1
    bdbai  
       2016-01-29 14:43:13 +08:00 via iPhone
    不说语言的都是耍流氓。
    有时候左括号换号是 IDE 给逼的,比如 VS 。个人倾向于不换行。
    skywatcher
        2
    skywatcher  
       2016-01-29 15:05:46 +08:00
    之前喜欢换行(据说¥ 1/行)。后来就算 vs 也强制不换行了,更紧凑剪短,阅读起来方便,还有这一行特么得值¥ 1 啊。

    PS :其实还是看习惯:-D
    LinJunzhu
        3
    LinJunzhu  
       2016-01-29 15:29:33 +08:00
    觉得楼主是个 JAVA 工程师
    knightdf
        4
    knightdf  
       2016-01-29 16:00:06 +08:00
    @LinJunzhu 我觉得楼主是个 C#工程师, Java 都是不换行的
    Kilerd
        5
    Kilerd  
       2016-01-29 16:07:11 +08:00
    if for 这些后面的{ 都是不用换行的

    只有 class 才用换行

    这个不是规范里面讲了吗?
    sun2920989
        6
    sun2920989  
       2016-01-29 16:08:40 +08:00
    每个语言的规范不一样,一般要么按自己喜好随意,要么尊重使用语言的官方或社区性规范
    ykqmain
        7
    ykqmain  
       2016-01-29 16:09:54 +08:00
    不管什么大括号, 都喜欢单独一行, 我是不是没救了
    {
    //
    }
    raincious
        8
    raincious  
       2016-01-29 16:10:09 +08:00
    @Kilerd 还是看语言对应的规范。

    如果你想在 Visual Studio 里写 if (blabla) {的话,最后会被 IDE 逼疯的,至少写 C++的时候是这样。
    ck65
        9
    ck65  
       2016-01-29 16:13:35 +08:00 via iPhone   ❤️ 1
    我把 phpstorm 自动排版设置成大括号一律去下一行。。
    asdwfwqd
        10
    asdwfwqd  
       2016-01-29 16:17:58 +08:00
    我也喜欢,但是快捷键格式化的时候也给我改成不换行的了, java eclipse
    小时候 vc 6.0 留下来的习惯吧
    烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
    Kilerd
        11
    Kilerd  
       2016-01-29 16:20:07 +08:00
    @raincious 那也是,不过好像都有那么两个党派吧,无论是什么语言。

    所以我用 Python : P


    @ck65 PHP 还是习惯我在 5L 说的那种写法。 BTW , phpstorm 应该可以设置啊。
    MartinLv
        12
    MartinLv  
       2016-01-29 16:20:31 +08:00
    平时写 OC/Swift 。屏幕纵向空间宝贵,因此所有左大括号都不换行。
    zacard
        13
    zacard  
       2016-01-29 16:34:04 +08:00
    个人习惯吧。。。
    kepenj
        14
    kepenj  
       2016-01-29 16:36:21 +08:00
    换行的都是牛芒
    ZyZyZzz
        15
    ZyZyZzz  
       2016-01-29 16:38:21 +08:00
    不换行的都是流氓

    不换行阅读效率骤减
    jessynt
        16
    jessynt  
       2016-01-29 16:38:26 +08:00
    if (balabala) {
    #code
    }
    ragnaroks
        17
    ragnaroks  
       2016-01-29 16:43:28 +08:00
    我都是
    ///xxxx
    function(param){//xx
    }
    miyuki
        18
    miyuki  
       2016-01-29 17:05:29 +08:00
    Golang: 你说啥?
    66beta
        19
    66beta  
       2016-01-29 17:06:42 +08:00
    google code style guide
    Rachel030219
        20
    Rachel030219  
       2016-01-29 17:45:25 +08:00
    个人表示更喜欢第二种,虽然开发工具的代码格式化工具格式化出来是第一种,每次都要自己改好久,我是不是没救了
    ck65
        21
    ck65  
       2016-01-29 18:05:12 +08:00 via iPhone
    @Kilerd 嗯,我就是指的 code style 设置。
    RqPS6rhmP3Nyn3Tm
        22
    RqPS6rhmP3Nyn3Tm  
       2016-01-29 18:42:34 +08:00
    @Kilerd Python 也是可以打起来的,比如空格和 tab :doge:
    FrankFang128
        23
    FrankFang128  
       2016-01-29 18:45:58 +08:00 via Android
    重要吗
    MyFaith
        24
    MyFaith  
       2016-01-29 18:51:08 +08:00
    我和楼主一样是强迫症。
    orvice
        25
    orvice  
       2016-01-29 18:52:03 +08:00
    golang 你这样写试试看。
    niseceric
        26
    niseceric  
       2016-01-29 18:52:48 +08:00
    golang +1 强迫症走好不送
    SpicyCat
        27
    SpicyCat  
       2016-01-29 18:53:12 +08:00
    每次看到这种问题,我就想到 Golang ,直接从语言层面扼杀了撕逼的可能,这得节约多少时间。
    Guenlay
        28
    Guenlay  
       2016-01-29 18:58:01 +08:00   ❤️ 1
    所以 Python 是最优美的语言

    大家快来吵架
    justjavac
        30
    justjavac  
       2016-01-29 19:00:25 +08:00
    去死吧!你这个异教徒! http://zhuanlan.zhihu.com/codestory/19700946
    Phariel
        31
    Phariel  
       2016-01-29 19:03:47 +08:00 via iPhone
    @justjavac 还是你这个应景!!!
    sjtlqy
        32
    sjtlqy  
       2016-01-29 19:04:34 +08:00
    golang 的兄弟们,起来弄死这些异教徒!!! 杀啊!!!!
    xuboying
        33
    xuboying  
       2016-01-29 19:19:47 +08:00 via Android
    不是说代码超过一屏后的 bug 量急剧增加么,还争什么。
    infinet
        34
    infinet  
       2016-01-29 19:49:23 +08:00
    坚决鄙视换行的异端,必需是风格二。
    mikicomo
        35
    mikicomo  
       2016-01-29 19:54:05 +08:00
    C/C++ 风格一, java 风格二,至于 python 呢.....#(滑稽)
    ZhaoMiing
        36
    ZhaoMiing  
       2016-01-29 19:56:20 +08:00
    if(...){
    ...
    }
    else{
    ...
    }
    nozama
        37
    nozama  
       2016-01-29 19:58:42 +08:00
    我就知道,不换行的居多...

    然而失去对称美实在看不下去!

    紧凑? 你咋不每个 block 写一行呢,那才紧凑呢。
    precisi0nux
        38
    precisi0nux  
       2016-01-29 20:11:35 +08:00
    其实根本不重要,按自己的风格写, commit 之前按照约定的标准格式化一下代码,搞定。
    Delbert
        39
    Delbert  
       2016-01-29 20:34:37 +08:00
    @ykqmain
    @MyFaith
    @UtopiaCHN
    你们写 tcl 的时候给我换行试试,函数名后不加空格直接接{试试。
    不说什么语言纯粹耍流氓。
    vivisidea
        40
    vivisidea  
       2016-01-29 21:18:26 +08:00
    必须是风格二,就连 shell 脚本也是

    if [ $? -eq 0 ]; then
    # do something ...
    fi
    cxbig
        41
    cxbig  
       2016-01-29 21:35:04 +08:00
    语言都有统一的代码规范, IDE 自动 reformat ,这种东西不值得操心。
    真要喜欢某个风格,自己改一下本地标准就好。
    morewe
        42
    morewe  
       2016-01-29 21:36:36 +08:00
    各人喜好吧。
    个人有强迫症喜欢风格二。。。而且省行数,可以阅读更多行。
    MountainRain
        43
    MountainRain  
       2016-01-29 21:37:25 +08:00
    公诉人:代码是你写的么? 被告:是 公诉人:念一遍 被告:巴拉巴拉巴拉 审判长:停,你刚刚的大括号换行了吗? 被告:换了 审判长:判 10 年
    raycloud
        44
    raycloud  
       2016-01-29 21:38:05 +08:00
    @morewe 同感
    msg7086
        45
    msg7086  
       2016-01-29 21:52:03 +08:00
    ruby 表示大括号开 block 都是 one line 。
    tux
        46
    tux  
       2016-01-29 21:55:28 +08:00
    {
    {
    {
    这不是更好看
    }
    }
    }
    loveuqian
        47
    loveuqian  
       2016-01-29 21:57:57 +08:00
    - (void)test
    {
    if () {
    //
    }
    }
    jasontse
        48
    jasontse  
       2016-01-29 21:58:54 +08:00 via iPad
    用 Visual Studio 的时候用风格一,其它时候用风格二。
    Zohar
        49
    Zohar  
       2016-01-29 21:59:31 +08:00
    if(…){

    }else{

    }
    plqws
        50
    plqws  
       2016-01-29 22:01:56 +08:00
    觉得换行才丑的只有我一个么
    wizardforcel
        51
    wizardforcel  
       2016-01-29 22:25:16 +08:00
    在模板里写第二种,在代码里写第一种。
    zhgg0
        52
    zhgg0  
       2016-01-29 22:36:14 +08:00
    这种东西没什么好讨论的,严格按照各个语言的规范来。
    konakona
        53
    konakona  
       2016-01-29 22:40:38 +08:00
    我啊!我挺喜欢的!
    GGGG430
        54
    GGGG430  
       2016-01-29 23:21:25 +08:00
    与团队项目风格一致就行, 个人习惯已不重要
    oska874
        55
    oska874  
       2016-01-29 23:33:42 +08:00
    astyle --style=linux xxx.c
    killerv
        56
    killerv  
       2016-01-29 23:43:31 +08:00   ❤️ 1
    以前我是都不换行,但是上次听同事说然后看了看,规范的代码应该是这样:
    class 和方法名的花括号换行,凡是逻辑类型的花括号都不换行。
    写 Python 就不用纠结这个, 2333
    icreeper
        57
    icreeper  
       2016-01-29 23:45:04 +08:00
    if ( ... ){
    ...
    }
    else{
    ...
    }
    个人喜欢这样
    500miles
        58
    500miles  
       2016-01-29 23:51:07 +08:00   ❤️ 1
    if switch for ..... 控制语句不换行...

    function class .... 换行
    pynix
        59
    pynix  
       2016-01-29 23:55:09 +08:00
    本质上是 Java , C#之争
    skyshy
        60
    skyshy  
       2016-01-30 00:18:53 +08:00
    居然发现 你写的代码行数 比我的还多~哈哈
    paicha
        61
    paicha  
       2016-01-30 01:19:37 +08:00
    楼主缺金币了,哈哈
    bingwenshi
        62
    bingwenshi  
       2016-01-30 01:20:11 +08:00
    你这种属于异教徒,应该烧死

    坚决支持第二种,才是正义
    zonghua
        63
    zonghua  
       2016-01-30 01:21:38 +08:00 via iPhone
    @Kilerd PHP 的标准化是函数类方法要换行的、而循环和逻辑就不换行。
    Yvette
        64
    Yvette  
       2016-01-30 02:46:46 +08:00
    if ( ... ){
    ...
    }
    else{
    ...
    }
    SharkIng
        65
    SharkIng  
       2016-01-30 07:28:28 +08:00
    不是每个标准都是一样的...
    loading
        66
    loading  
       2016-01-30 07:57:07 +08:00 via Android
    我就是这种人…
    yougg
        67
    yougg  
       2016-01-30 09:01:00 +08:00
    我写 Java 时, 左大括号{ 从来都是单独一行.
    我写 Go 时, 左大括号{ 从来都不是单独一行.

    :doge:
    Perry
        68
    Perry  
       2016-01-30 09:44:57 +08:00 via iPhone
    只要确保 consistency 就可以了
    hantsy
        69
    hantsy  
       2016-01-30 09:51:05 +08:00
    PHP PSR 好像有这要求。。。

    不过我基本写 Java , 都是将 { 放末尾。。。 Java 一些觉的 CodeStyle 如 Google Code Style 也是如此。
    beemolin
        70
    beemolin  
       2016-01-30 10:00:49 +08:00
    if (...) {
    ...
    } else {
    ...
    }
    chuhemiao
        71
    chuhemiao  
       2016-01-30 10:06:10 +08:00
    一直是风格 2 ,但是老大一直是风格 1
    h1029306
        72
    h1029306  
       2016-01-30 10:10:30 +08:00
    @UtopiaCHN 风格 2 里面竟然不空格,异教徒烧死

    if (...) {
    ...
    } else {
    ...
    }
    hronro
        73
    hronro  
       2016-01-30 10:13:35 +08:00
    我也喜欢这种风格,可惜我现在的主要语言是 JavaScript ,没法用这种风格(万恶的行尾自动加分号)
    return
    {
    ...
    }
    这种会被转换成
    return ;
    {
    ...
    }
    最后 return 一个 undefined 出来
    zhjits
        74
    zhjits  
       2016-01-30 10:13:53 +08:00
    只要保证 } else { ,别的我没意见
    igaozp
        75
    igaozp  
       2016-01-30 10:13:58 +08:00
    按照规范来
    beemolin
        76
    beemolin  
       2016-01-30 10:39:43 +08:00
    同意 @zhjits
    else 换行跟 if 换行的风格 1 一样都是异教徒
    theJian
        77
    theJian  
       2016-01-30 10:51:10 +08:00
    这个贴至少值五毛
    wawehi
        78
    wawehi  
       2016-01-30 10:57:00 +08:00
    不喜欢打花括号,所以转入了 py 的行列
    Bryan0Z
        79
    Bryan0Z  
       2016-01-30 10:57:32 +08:00 via Android
    写 Java 的,一直风格二
    kingcos
        80
    kingcos  
       2016-01-30 11:02:30 +08:00 via iPhone
    尼玛,我这个选择困难症加强迫症,看到这个又纠结了。。。
    colordancer
        81
    colordancer  
       2016-01-30 11:06:47 +08:00
    我来告诉你为什么要换行:

    //if ()
    {

    }
    dacapoday
        82
    dacapoday  
       2016-01-30 11:16:04 +08:00
    这真是万年钓鱼贴
    an168bang521
        83
    an168bang521  
       2016-01-30 11:21:51 +08:00
    if ( ... ){
    //
    }else{
    ...
    }
    liberize
        84
    liberize  
       2016-01-30 12:26:22 +08:00
    java 一律用风格二, c++ 除了函数用风格一,其余类、语句块等都用风格二
    风格二看起来比较紧凑,另外空格不能少
    PS: 前提是写自己的代码,如果是改现有的代码,保持原有风格
    RitzoneX
        85
    RitzoneX  
       2016-01-30 13:16:22 +08:00
    C 用第 1 种
    Java 用第 2 种
    eliteYang
        86
    eliteYang  
       2016-01-30 13:38:07 +08:00
    用 C++,喜欢第一种, java 的人用第二种
    liearth
        87
    liearth  
       2016-01-30 14:29:30 +08:00
    if () {
    ...
    } else {
    ...
    }
    awfe
        88
    awfe  
       2016-01-30 14:32:21 +08:00
    楼主你 else 两边竟然不加空格……
    wangluwl
        89
    wangluwl  
       2016-01-30 14:38:58 +08:00
    @Yvette me too,习惯这种
    lsmgeb89
        90
    lsmgeb89  
       2016-01-30 14:40:57 +08:00
    if (…) {

    } else {

    }
    akstrom
        91
    akstrom  
       2016-01-30 14:48:42 +08:00
    if ( ... )
    {
    ...
    }
    else
    {
    ...
    }

    看到不是这样的我会很自然的帮它回车..............
    Arthur2e5
        92
    Arthur2e5  
       2016-01-30 15:42:46 +08:00
    哦?我也喜欢对齐啊:

    if (cond)
    --do_something();
    else
    --{
    ----blah();
    ----goto err;
    --}

    (逃)
    * * *
    @vivisidea 在 $? 上面做 zero-check 而不是用 && 和 || 或者直接 if previous_command 都是教程看傻了……
    sfz97308
        93
    sfz97308  
       2016-01-30 16:52:07 +08:00
    之前习惯风格一,感觉结构更清晰易读。
    现在变成习惯风格二了,再看之前自己写的风格一代码,感觉好松散。
    这两种都是合理的,各有利弊。
    iamleung
        94
    iamleung  
       2016-01-30 17:22:28 +08:00
    貌似还没有开始讨论花括号前要不要加空格?
    ^_^
    erinsnow
        95
    erinsnow  
       2016-01-30 17:52:19 +08:00
    @iamleung 不加空格能看吗?就那么懒?懒还回车干啥,全部代码写成一行算了。。。。。
    iamleung
        96
    iamleung  
       2016-01-30 18:23:14 +08:00
    @erinsnow ← ← 大兄弟不要激动,我没说不加空格呢
    littleshy
        97
    littleshy  
       2016-01-30 19:25:13 +08:00
    明明都是可以设置的,为什么都要怪到 VS 身上?
    realpg
        98
    realpg  
       2016-01-30 21:57:24 +08:00
    PHPer ,个人用后一种,最主要原因是省一个空行,一屏幕能多显示出很多代码。

    但是 PSR 规范要求前一种,十分搞不懂连特么括号怎么写都规定……
    Kokororin
        99
    Kokororin  
       2016-01-31 14:48:03 +08:00
    我用 phpfmt 直接格式化成风格一……
    will0404
        100
    will0404  
       2016-01-31 14:53:54 +08:00 via iPhone
    非要大括号的话必然是风格二啊 由于渐渐开始讨厌大括号 现在写 js 开始用 coffee 写
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1071 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 19:08 · PVG 03:08 · LAX 11:08 · JFK 14:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.