Style 全般

インデント

🚨 インデントはスペース4つを利用する

☀
int main()
{
    printf("Hello World!!");
}
☔
int main()
{
  printf("Hello World!!");
}

🚨 case, defaultswitch と同じインデントレベルに書く

☀
switch (condition) {
case condition1:
    // ...
    break;
default:
    // ...
    break;
}
☔
switch (condition) {
    case condition1:
        // ...
        break;
    default:
        // ...
        break;
}

スペースの挿入

🚨 単項演算子の前後にはスペースを入れない

☀
i++;
++i;
&pointer
☔
i ++;
++ i;
& pointer

🚨 二項演算子と三項演算子の前後にはスペースを入れる

☀
y = m * x + b;
c = a | b;
abs = 0 <= n ? n : -n;
☔
y=m*x+b;
c = a|b;
abs = 0 <= n?n:-n;

🚨 構造体メンバーにアクセスするための ., -> の前後にはスペースを入れない。

☀
c.re;
c->re;
☔
c . re;
c-> re;

🚨 ,, ; の前にはスペースを入れない。, の後ろにはスペースを入れる。

☀
y = m * x + b;
f(a, b);
☔
y = m * x + b ;
f(a , b);
f(a,b);

🚨 () の内側にはスペースを入れない。() の外側にはスペースを入れる。

☀
if (a * b == c) {
    f(a, b);
}
☔
if( a * b == c ){
    f( a, b );
}

🚨 キーワード (予約語、識別子、リテラル) の前後にはスペースを入れる。

☀
if (condition)
☔
if(condition)

🚨 ただし関数名と引数を囲む ( の間にはスペースを入れない。

☀
do_something();
☔
do_something ();

改行

🚨 1つの行に複数の式を書かない。

☀
x++;
y++;
if (condition)
    doSomething();
☔
x++; y++;
if (condition) doSomething();

🚨 if, else, for, while, do, switch{} は同じ行に書く。

☀
if (condition) {
    /* consequent */
} else {
    /* alternative */
}
☔
if (condition)
{
    /* consequent */
}
else
{
    /* alternative */
}
☔
if (condition) {
    /* consequent */
}
else {
    /* alternative */
}
☀
for (i = 0; i < MAX; i++) {
    /* something */
}
☔
for (i = 0; i < MAX; i++)
{
    /* do something */
}
☀
while (condition) {
    /* do something */
}
☔
while (condition)
{
    /* do something */
}
☀
switch (condition) {
case condition1:
    // ...
    break;
default:
    // ...
    break;
}
☔
switch (condition)
{
    case condition1:
        // ...
        break;
    default:
        // ...
        break;
}
☀
struct complex {
    double re;
    double im;
};
☔
struct complex
{
    double re;
    double im;
};

🚨 関数の本体ブロックを囲む {} はそれぞれ1行利用する。

☀
int get_current_year()
{
    return 0;
}
☔
int get_current_year() {
    return 0;
}