mocodo
V2EX  ›  C

C/C++猿们,你们的花括号{}都习惯怎么写?

  •  
  •   mocodo · Apr 6, 2015 · 6138 views
    This topic created in 4232 days ago, the information mentioned may be changed or developed.
    是这样:
    if
    {
    }
    else
    {
    }
    还是这样:
    if {
    }
    else {
    }
    呢?

    我觉得后一种写法不对称,看着很别扭,可很多代码都这样写。。。
    91 replies  •  2015-04-08 22:28:40 +08:00
    zyue
    zyue
    Apr 6, 2015
    1
    我是前一种 写java代码也是这样
    skydiver
    skydiver
    Apr 6, 2015❤️3
    2
    都不对,应该是这样
    if {
    } else {
    }
    endrollex
    endrollex
    Apr 6, 2015
    3
    后一种可以节约一行,喜欢紧凑,如果空出来太多觉得不舒服
    liuhaotian
    liuhaotian
    Apr 6, 2015
    4
    for ($i=1;$i<5;$i++) {
    if () {
    } else {
    }
    }
    vopfly
    vopfly
    Apr 6, 2015❤️1
    5
    class A
    {
    A()
    {
    if (true) {

    } else {

    }
    }
    }

    个人习惯:class, struct, function 另起一行,其他不
    vopfly
    vopfly
    Apr 6, 2015
    6
    空格被狗吃了
    nicai000
    nicai000
    Apr 6, 2015
    7
    这个有规矩的好吧!

    可以嵌套的写在行尾, 不可以嵌套的另起一行. K&R, 内核, 甚至包括K的Go语言全是遵循这个原则的.
    YouXia
    YouXia
    Apr 6, 2015
    8
    以前第一种,后来我们组要求第二种,就慢慢适应第二种了。并且学了Go语言,所以,第二种就适应了。
    v2gba
    v2gba
    Apr 6, 2015 via iPhone
    9
    以前是第一种 后来学校里全是第二种就改成第二种了。。
    sudoz
    sudoz
    Apr 6, 2015
    10
    Class的{另起一行;
    function的{ 空一格不换行
    zcbenz
    zcbenz
    Apr 6, 2015❤️1
    11
    Google C++ Style Guide
    https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Conditionals

    风格什么样其实无所谓,统一就好。
    mns
    mns
    Apr 6, 2015
    12
    以前是
    ```
    if
    {
    }
    else
    {
    }
    ```
    后来是
    ```
    if {
    } else {
    }
    ```
    bugeye
    bugeye
    Apr 6, 2015
    13
    不写花括号,语号用逗号分隔,这样就没烦恼了吧。
    jiezhi
    jiezhi
    Apr 6, 2015
    14
    我写Java是:
    if {
    } else {
    }

    写C/C++是:
    if
    {
    }
    else
    {
    }

    写python时:
    。。。
    咦花括号呢?

    不过在公司项目里,还得跟着前人走。
    jasontse
    jasontse
    Apr 6, 2015 via iPad
    15
    此帖还可以衍生出你们的括号前后带不带空格呢
    FOO( A, B )
    还是
    FOO(A, B)
    Jaylee
    Jaylee
    Apr 6, 2015
    16
    @jasontse 带空格也不是这样带啊。。。

    Foo(A, B, C)
    lifanxi
    lifanxi
    Apr 6, 2015
    17
    我写C++用stroustrup风格,花括号永远独占一行。
    rentaro
    rentaro
    Apr 6, 2015
    18
    C 是第一种, Java 是第二种。参考 Linux 内核文档有完整的代码规范
    leavic
    leavic
    Apr 6, 2015
    19
    第一种,强迫症肯定都这样。
    GeekCat
    GeekCat
    Apr 6, 2015
    20
    class{
    function{
    for{
    if{
    ....
    换行的大括号不舒服!大括号换行会死星人!
    GeekCat
    GeekCat
    Apr 6, 2015
    21
    当然我得承认这是从某些“宇宙级语言”带过来的习惯。。。。
    chiu
    chiu
    Apr 6, 2015
    22
    XadillaX
    XadillaX
    Apr 6, 2015
    23
    我写 C 系是

    if
    {
    }
    else
    {
    }

    如果是 js 系的话

    if {
    } else {
    }
    ncisoft
    ncisoft
    Apr 6, 2015 via Android
    24
    独爱GNU coding standard
    if (...)
    {
    // code here
    }
    FastMem
    FastMem
    Apr 6, 2015
    25
    Java\php的时候
    if () {
    //DO
    } else {
    }

    单行语句省略花括号、

    直接 if () xxxxx
    //do
    ncisoft
    ncisoft
    Apr 6, 2015 via Android
    26
    花括号前面两个空格
    inevermore
    inevermore
    Apr 6, 2015
    27
    前者 看着整齐
    dreamtrail
    dreamtrail
    Apr 6, 2015
    28
    if () {
    } else {
    }
    我不能接受别的形势的代码风格,读代码前一定要重排成这种的风格。
    Majirefy
    Majirefy
    Apr 6, 2015
    29
    少年又挑起来宗教战争……
    zhchbin
    zhchbin
    Apr 6, 2015
    30
    if () {
    } else {
    }

    但更多时候,如果能写成下面这种形式,就不会出现else了。

    if () {
    ...
    return;
    }

    ...
    kn007
    kn007
    Apr 6, 2015
    31
    我是2楼这种。。。

    if {

    } else {

    }
    rzti483NAJ66l669
    rzti483NAJ66l669
    Apr 6, 2015
    32
    if[tab]([space][space])
    [tab]{
    [tab]#code#
    [tab]}

    JAVA
    Rob
    Rob
    Apr 6, 2015
    33
    第一种,看着舒服
    typcn
    typcn
    Apr 6, 2015
    35
    JS 类的
    if ( content ){

    } else {

    }

    C 类的
    if(content){

    }else{

    }

    IDE 强制纠正的除外
    ryd994
    ryd994
    Apr 6, 2015 via Android
    36
    又是圣战贴
    hit9
    hit9
    Apr 6, 2015
    37
    if (balabala) {
    } else if (balabala) {
    } else {
    }
    fetich
    fetich
    Apr 6, 2015
    38
    都別爭了,譚書是第一種。
    patrickstar
    patrickstar
    Apr 6, 2015
    39
    我一般用第一种,主要是看习惯了,括号配对的时候看起来都列对齐的
    heliar
    heliar
    Apr 6, 2015
    40
    不缩进不舒服的飘过。。。
    Monad
    Monad
    Apr 6, 2015
    41

    必须是这样的
    F32
    F32
    Apr 6, 2015 via Android
    42
    @vopfly 发空格要用 nbsp; 哦
    nicktogo
    nicktogo
    Apr 6, 2015 via Android
    43
    @fetich 正解。。。刚入门就是第一种,后来学java改成第二种了
    xxzs
    xxzs
    Apr 6, 2015 via Android
    44
    Linux kernel要求一行能写完的不加花括号
    clanned
    clanned
    Apr 6, 2015 via Android
    46
    C/C++第一种,Java第二种。
    omi4399
    omi4399
    Apr 6, 2015
    47
    K&R 飘过
    andyhunter
    andyhunter
    Apr 6, 2015
    48
    永远独占一行
    xuwenmang
    xuwenmang
    Apr 6, 2015
    49
    if {
    } else {
    }

    优点1、在越来越宽的屏幕上能看到更多的代码;
    优点2、{ 起到承上启下的作用;
    styletjy
    styletjy
    Apr 6, 2015
    50
    来找事儿的。。
    br00k
    br00k
    Apr 7, 2015
    51
    格式化。。。
    book1925
    book1925
    Apr 7, 2015 via Android
    52
    喜欢第一种,第二种偶尔会眼瞎搞错。。
    linux40
    linux40
    Apr 7, 2015 via Android
    53
    ansc风格
    eqing
    eqing
    Apr 7, 2015
    54
    if (x) {
    xxx
    } else {
    xxx
    }

    的路过
    anguslg
    anguslg
    Apr 7, 2015
    55
    好像是在问php是不是最好的语言一样
    revlis7
    revlis7
    Apr 7, 2015
    56
    记得以前看ThinkInC里面提到的是用花括号与函数名同行的写法,这样可以明显区分是Declaration还是Definition
    fliar
    fliar
    Apr 7, 2015
    58
    習慣是另起一行,上下對齊
    這樣看嵌套關係時不太會看走眼
    XDA
    XDA
    Apr 7, 2015
    59
    随缘...
    bugeye
    bugeye
    Apr 7, 2015
    60
    @ehs2013 你这种单行的真心没必要加任何括号。
    ehs2013
    ehs2013
    Apr 7, 2015
    61
    @bugeye 你不知道什么时候,就要再在流程中添加一个语句。这样写的话无论何时都没有问题。
    同理,在 C++ 中,我也会为每一个类写空析构函数。
    canautumn
    canautumn
    Apr 7, 2015❤️1
    62
    @revlis7 看到你这个,想起来一个刚好相反的案例,刚在objc.io上看到omnigroup的惯例是(objective-c)不论definition还是declaration,函数名结尾都加分号;(一般definition是不加分号,直接写花括号。他们不仅是花括号另起一行,而且函数定义后边也加上分号)。理由和你说的刚好相反:方便将整行从declaration拷贝到definition,或者反过来。
    canautumn
    canautumn
    Apr 7, 2015❤️1
    63
    @bugeye 前一段出了heartbleed漏洞后,有一种意见是即使花括号里是单行,也应该加花括号,理由是有可能在以后的维护中需要在花括号里加一行,甚至加一个调试输出,都要再麻烦加上花括号。就这样加/去花括号的一来一回中,一不小心就有可能忘记。再加上缩进,很有可能看错,就导致了heartbleed这类漏洞。

    当然仅仅是一种意见而已。
    Halry
    Halry
    Apr 7, 2015 via Android
    64
    第一种,好看一点,
    revlis7
    revlis7
    Apr 7, 2015
    65
    @canautumn 其实我也怀疑书里的说法,因为Declaration都是有分号的,倒觉得你说的更有实际价值。
    jun4rui
    jun4rui
    Apr 7, 2015
    66
    这不是可以和VIM、Emacs相提并论的程序员顶级圣战之一吗?
    Amankwah
    Amankwah
    Apr 7, 2015
    67
    @skydiver 好吧,我也是这样写的……
    seki
    seki
    Apr 7, 2015
    68
    这个不是公司统一代码风格的事情么,个人鼓捣的话可以参照某些公司的规则
    qaulau
    qaulau
    Apr 7, 2015
    70
    个人喜好这样,顶格写,看起来紧凑
    if {

    } else {

    }
    lintmx
    lintmx
    Apr 7, 2015
    71
    @skydiver 我也是这种。
    hippoboy
    hippoboy
    Apr 7, 2015
    72
    if {
    } else {
    }
    fashioncj
    fashioncj
    Apr 7, 2015
    73
    两种对折叠都没有影响-。- 主要是自动格式化的语法问题。
    evlos
    evlos
    Apr 7, 2015 via iPhone
    74
    本来我是第二种写法,给你们一讲我也想改成这样了XD
    if {
    } else {
    }
    Citrus
    Citrus
    Apr 7, 2015 via iPhone
    76
    @canautumn 非常同意,所以我的代码里不存在单行,所有的都写成代码块,调试的时候随手加减一行很方便,如果这个条件暂时不要了直接删掉都没问题。
    raincious
    raincious
    Apr 7, 2015
    77
    微软表示要逼屎你们这些不另起一行写 { 的异类



    (我已经老实了)
    (这就是为啥有的时候PHP写着写着:咦?怎么PSR2过不了了)
    perseawe
    perseawe
    Apr 7, 2015
    78
    只要符合某种规范都可以,到时候其他人看的时候用IDE AutoStyle一下就好了。

    一会缩进一会不缩进的直接打死,两元运算符两边不加空格的打死。
    pinepara
    pinepara
    Apr 7, 2015
    79
    风格不重要,风格统一才重要。
    http://clang.llvm.org/docs/ClangFormatStyleOptions.html
    niconiconi
    niconiconi
    Apr 7, 2015
    80
    坚决选择第一种。方便看
    lzgouo
    lzgouo
    Apr 7, 2015
    82
    像2楼那种写法
    fulvaz
    fulvaz
    Apr 7, 2015
    83
    讨论这个没有任何意义

    花括号之后为了让你的代码分出块,更加易读,现在越来越多人发现,假如取消括号只使用缩进也能达到一样的视觉效果,还避免了后一个括号
    }
    }
    }
    }
    }
    }

    像这样的灾难


    那你硬是要分出个高低的话
    main(...) {
    }
    更好
    首先节省一行,让你的代码视野更广,能看到更多代码

    其次,是行气,因为代码的内容应该是函数名称的承接,函数名应该接着代码,不能让思维被括号打断,所以{应该放到函数名称后面,而不是空一行

    要战我把我老板叫上来,和你们辩到明年都行
    fulvaz
    fulvaz
    Apr 7, 2015
    84
    @fulvaz
    ...我了个去,我的缩进被狗吃了?
    fatestigma
    fatestigma
    Apr 7, 2015
    85
    我个人喜欢第二种。但是我们学校很多书上采用第三种。。
    if ()
    { [code at here]
    }
    else
    { [code at here]
    }
    yech1990
    yech1990
    Apr 8, 2015 via Android
    86
    The pythonic way

    if ( ) {
    [code...] }
    else {
    [code..] }
    yech1990
    yech1990
    Apr 8, 2015 via Android
    87
    居然吃掉我的缩进

    >> if (a) {
    >> XXX }
    >> else {
    >> XXX }
    ThomasZ
    ThomasZ
    Apr 8, 2015
    88
    以前是第一种, 现在改成第二种了, 一个括号占一行太浪费了, 而且代码折叠以后第二种看着会好一点(vim自带的缩进折叠)
    mozartgho
    mozartgho
    Apr 8, 2015
    89
    @vopfly 这是K&R写法,我也习惯这样
    icylord
    icylord
    Apr 8, 2015
    90
    第一种。
    hector
    hector
    Apr 8, 2015
    91
    ```
    #define begin {
    #define end }

    void hello()
    begin
    std::cout<<"hello world"<<std::endl;
    end
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4343 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 164ms · UTC 09:35 · PVG 17:35 · LAX 01:35 · JFK 04:35
    ♥ Do have faith in what you're doing.