{}の位置

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
ta
記事: 16
登録日時: 8年前

{}の位置

#1

投稿記事 by ta » 8年前

皆さんは、下記の場合、どちらの書き方で書いてらっしゃいますか?
私的には、下の書き方の方が見やすいのですが、上の書き方の方が多い気がします。
やっぱり慣れでしょうか?

コード:

#include <stdio.h>

int main(void)
{
	if (x == 10) {
		printf("10です。\n"); 
	} else {
		printf("10ではありません。\n");
	}
}

コード:

#include <stdio.h>

int main(void)
{

	if (x == 10)
	{
		printf("10です。\n"); 
	}
	else
	{
		printf("10ではありません。\n");
	}
}

アバター
kerotan0820
記事: 91
登録日時: 10年前
住所: 東京都
連絡を取る:

Re: {}の位置

#2

投稿記事 by kerotan0820 » 8年前

私は

コード:

for()
{
       printf("こちら派です¥n");
}
中格好の範囲が一目でわかるのでこちらのほうが好みです。

ただ、ifの多分岐の際は

コード:

if( ~ ){
       printf("\n");
}else if( ~ ){
      printf("\n");
}else{
      printf("\n");
}
このように書いています。
けろけろにゃー (」・ω・)」うー!

beatle
記事: 1280
登録日時: 9年前
住所: 埼玉
連絡を取る:

Re: {}の位置

#3

投稿記事 by beatle » 8年前

使ってる言語や計算機、コミュニティーなどでも大きく変わる問題だと思います。
例えば上のような書き方は行数を削減しやすいため、昔の計算機のように画面が小さかったころには好まれたと読んだ記憶がありますし、
Visual C#のエディタでは下のようなフォーマットを強制してきます。
私は既存のソースコードを編集する場合はそのソースコードの形に合わせ、新規に書く場合は下のような書き方にする場合が多いです。
慣れ、趣味、一番最初に出会った教科書からの影響、憧れの人の書き方などなど、いろいろな要因があります。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: {}の位置

#4

投稿記事 by softya(ソフト屋) » 8年前

インデントスタイルですね。
上のがK&Rのスタイルと呼ばれていて、下のがBSD/オールマンのスタイルです。
「字下げスタイル - Wikipedia」
http://ja.wikipedia.org/wiki/%E5%AD%97% ... 4%E3%83%AB

どっちが正解と言うわけではないですが、会社orチームorグループごとに決めている場合が多いようです。
K&Rのスタイルの方が多くの行を一度に見れるので私は好きですね。

【補足】
少なくともプロジェクト単位ではルールを統一して一貫性を持たせたほうがバグになる可能性が低くなります。
それと途中でスタイルが変わるとなんか見なおした時に気持ち悪さを感じます。
※ 多人数でメンテしてスタイルがぐっちゃに成っているソースコードはとても気持ち悪いです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

nil
記事: 428
登録日時: 9年前

Re: {}の位置

#5

投稿記事 by nil » 8年前

僕は
if(...){
}
else if(...){
}
else{
}
みたいな感じですね。
僕はHSPでプログラミングを始めたので、
こういう書き方が強制されてたのもあって、ですね。

あと、
{}の前にあるのがifなのかforなのかもすぐ分かりますし。

個人でプログラムを組むのであれば自身のお好きなように、
サークルや集団に入るならばそこでのルールに従うべきではないかと。

ミーン
記事: 8
登録日時: 8年前

Re: {}の位置

#6

投稿記事 by ミーン » 8年前

ふむ。これは意見が分かれそうなトピックですね。

僕はこんな感じです:

if(condition = 0)
{

} else if(condition = 1) {

} else {

}
I've been deleted because of nothing.

アバター
みけCAT
記事: 6311
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: {}の位置

#7

投稿記事 by みけCAT » 8年前

どっちでもありません。私はこうです。

コード:

#include <stdio.h>
 
int main(void) {
    if(x==10) {
        printf("10です。\n"); 
    } else {
        printf("10ではありません。\n");
    }
}
オフトピック
思いっきりコンパイルエラーになるのは気にしない。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
へにっくす
記事: 630
登録日時: 8年前
住所: 東京都

Re: {}の位置

#8

投稿記事 by へにっくす » 8年前

私は最初は詰めてたけど
最近はカッコが縦で分かるように整形してるなあ。。

コード:

int main(int argc, char *argv[])
{
	if (true)
	{
	}
	else
	{
	}
}
どっちがいいということはないね。
みんなそれぞれのスタイルがあるでしょうから。
written by へにっくす

jay
記事: 314
登録日時: 9年前
住所: 大阪市
連絡を取る:

Re: {}の位置

#9

投稿記事 by jay » 8年前

確かにこれはその時に適応されるルールによるでしょうね
ただ「完全に自分が自由に決めていい場合」ではどちらが多いのか、と言うのは1人のプログラマーとしてちょっぴり気になる所ではありますが(笑)


僕の場合はこんな感じです

コード:

#include <stdio.h>
 
int main(void)
{
 
    if (x == 10)
    {
        printf("10です。\n"); 
    }
    else
    {
        printf("10ではありません。\n");
    }
}
つまるところは対応する括弧同士は縦に位置を揃えます
ついでに言うならif文やfor文の後が1行だけなら括弧は省略する派ですね
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

アバター
nullptr
記事: 239
登録日時: 8年前

Re: {}の位置

#10

投稿記事 by nullptr » 8年前

コレはたしかに気になりますよね~

完全にルールのない自由な場合(更に言えばC++の場合)、私は

コード:

// class
class Hoge
    :public Oya
{
private:
    int hoge;

public:
    Hoge( hogeee )
        :Oya()
        ,hoge( hogeee )
    {
        // inline method
    }

    int getHoge() const;
};

// method
int Hoge::getHoge() const
{
    if( true )
    {
        //
    }
    else // まずこんな書きかたする人他にいないと思うんだけど、ifが重なるときはifの位置を揃えたくなってしまう...
    if( true )
    {
        //
    }
    else
    {
        //
    }

    if( true ) return1; //一行

    // 実はifよりswitchのcaseの方が気になる
    switch( this->hoge )
    {
        case 1:
        { // ブロック作らないと問題が起きることがあるし、ケース毎の区切りがハッキリ見やすいので私は常につける
            //
        }
    
        default:
        {
            //
        }
    }

    for( ; 1 ; )
    {
        //
    }

}
こんなんですかね。
 
 
✜ で C ご ✜
: す + 注 :
¦ か + 文 ¦
?
Is the は :
order C++? ✜
     糸冬   
  ――――――――
  制作・著作 NHK
 
 

アバター
沖 滉均
記事: 237
登録日時: 10年前
住所: K県F市

Re: {}の位置

#11

投稿記事 by 沖 滉均 » 8年前

私は下の例の書き方が好きですね(個人的な話です)

コード:

for (;;)
{
    hoge;
}

if (hoge)
{
    fuga;
}
むしろ、switch~case文の方が気になる…

コード:

switch (hoge)
{
    case 1:
        break;
    default:
        break;
}
/*
Visual Studio 6.0なんかだと強制的に以下のように調整されるのが気に食わない
switch (~)
{
case 1:
    break;
default:
    break;
}
*/
オフトピック
beatleさんのC#は強制してくる言われている点については、デフォルト設定がそうなっているだけで書式設定で変えられる。
私はオブジェクトの初期化子とかは並べて書きたい場合があるから勝手に改行を入れないように設定している。
結構細かく変えられるのでオプションの[テキストエディタ]→[C#]→[書式設定]→[改行]のあたりをいじってみるのも良いかもしれない。
There is no royal road to learning.
codeタグで指定できる言語
画像

アバター
MoNoQLoREATOR
記事: 284
登録日時: 9年前
住所: 東京

Re: {}の位置

#12

投稿記事 by MoNoQLoREATOR » 8年前

私は{}は縦に揃えない派閥ですね。
これは参考書の影響です。

コード:

//class
class Class :public parent {
    Class(int param) :parent(),var(param) {
        //todo
    }
 
    int func()const;

private:

    int var;
};
 
//method
int Class::func() const {
    if(~){
        //todo
    }
    else{
        //todo
    }
    else{
        if(){
            //todo
        }
    }
    // else if    は絶対に使いません
    //ただし、下のように書くことはあります 
    if(~) return true;
    else if(~) return false;
 
    //switch-case
    int damy
    switch(damy){
    
    case 1:

        //todo
        break;
    
    case 2:

        //todo
        break;
    }
    //クラスでラベルを指定するときと同じようにします
}

たかぎ
記事: 328
登録日時: 10年前
住所: 大阪
連絡を取る:

Re: {}の位置

#13

投稿記事 by たかぎ » 8年前

私は後者ですが、はっきりいってそんなことはどうでもよいと考えています。
一貫性がないのは困りますが、どちらかにそろえておけばそれでよいと思います。

nil
記事: 428
登録日時: 9年前

Re: {}の位置

#14

投稿記事 by nil » 8年前

一回投稿したのですがswitchの話があったので……

VC++2008使ってた時には

コード:

switch(a){
    case 0:
        hoge();
        break;
(以下略)
}
みたいな感じだったんですが
今は

コード:

switch(a){
case 1:
    break;
}
ですね。
ちなみに関数定義の時の{}も改行はしません。
ifやforは中身が1行なら{}を省略してます。
クラスのコンストラクタは

コード:

class A{
	A() : a(0), b(0){}
	//	あんまり行数が多いと
	A()
		: a(0),
		b(0){
			//	こんなかんじですね
	}
};
こんなかんじです。
関係無いですが個人的には3項演算子を多用する方です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 10年前
住所: 東海地方
連絡を取る:

Re: {}の位置

#15

投稿記事 by softya(ソフト屋) » 8年前

こういう話は宗教論争のように落ち着くところが無いんですよね。
あんまりスタイル固執しすぎると読みづらくなる場合があるので時と場合によると私は思います。
気にしているの一点、後々の自分にも他人にも読みやすいコードを書いているかです。
あと1つのプロジェクト内でスタイルは変更しない。

コード:

//	日頃はこうですが。
if( a==1 ) {
	b = 2;
}
//	連続する時など、こっちが見やすければこっちを使います。
if( a==1 ) b = 2;
if( a==2 ) c = 2;

//	同様に涼雅さんの様に日頃はこうですが。
switch(a){
case 1:
    break;
}

//	見やすい場合なら、こうします。
switch(a){
case 1: b=2; break;
case 2: c=2; break;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
ta
記事: 16
登録日時: 8年前

Re: {}の位置

#16

投稿記事 by ta » 8年前

下の書き方は少数派なのかな?と思っていましたけど
下の書き方をしておられる方もいて、少し安心しました。(^-^

閉鎖

“C言語何でも質問掲示板” へ戻る