ページ 11

雑談です。

Posted: 2008年9月16日(火) 14:28
by Haru
あれ?
雑談、質問のマークがなくなってますね?(^^;

雑談ですが、皆さんにお聞きしたいです。

ソース内で使う{}ですが、
やはり皆さん、
if(){

	}

のように書きますか?
私はどうしても、	
	if()
	{
	
	}
のように書いたほうが自分的に見やすくて、良いんですが・・・。
皆さんのソースを見るとやはり前者のほうが圧倒的に多いですよね。

やはり前者のほうが見やすいのでしょうか?
もしそうなのであれば、今のうちに直してしまうかと思っているんですが。

Re:雑談です。

Posted: 2008年9月16日(火) 14:39
by 御津凪
私は前者ですね。
コード行を減らす意味でもありますが。

ただし、if の中の式がどうしても長くなってしまった場合は、後者を使いますね。
後で付け足した時に間違えないように。

Re:雑談です。

Posted: 2008年9月16日(火) 14:42
by yuuki++
私は「両方」という最悪のパターンです笑

関数定義では後者ですが、ifなどの制御文、structやclassとかの定義には前者を使ってます。

ソースコードに一貫性がないのはよくないとは思いますが、癖が付いてしまいました・・・

Re:雑談です。

Posted: 2008年9月16日(火) 14:53
by バグ
基本的には後者かなぁ…
ただし、MS-DOSみたいな古い環境だとテキストエディタの幅が狭いので、行数を減らす為に仕方なく前者を使用する事はあります。

Re:雑談です。

Posted: 2008年9月16日(火) 15:01
by Justy
 後者ですね。

 最初は前者だったのですが、括弧がらみのミスが後者だと防ぎやすい・気づきやすいので
途中から後者にしました。

 行数が増えるのは最初は気になりましたが、ちょうどその頃からコードが簡潔に
書けるようになり始めた頃だったので直ぐに気にならなくなりました。

Re:雑談です。

Posted: 2008年9月16日(火) 15:02
by Mist
私は前者ですね。
仕事の場合、他社が作ったソースを改造する場合はそれに合わせるため後者を使用することもありますけど。

質問なんですが後者で書く人はelse文は下のように書くんでしょうか?

if ()
{
}
else
{
}

Re:雑談です。

Posted: 2008年9月16日(火) 15:10
by Haru
返信ありがとうございます!!

>御津凪さん

>私は前者ですね。
>コード行を減らす意味でもありますが。
>ただし、if の中の式がどうしても長くなってしまった場合は、後者を使いますね。
>後で付け足した時に間違えないように。

使い分けてる訳ですね!
私みたいな未熟者には、長くならなくても、間違えてしまうので、
やはり前者の方が良いですかね(汗

>yuuki++さん

> 私は「両方」という最悪のパターンです笑

私には、最悪なのかどうかの判断は出来ませんが、
yuuki++さんの中での決まり事はやはりあるみたいですね(^^;

>バグさん

>基本的には後者かなぁ…
>ただし、MS-DOSみたいな古い環境だとテキストエディタの幅が狭いので、
>行数を減らす為に仕方なく前者を使用する事はあります。

なるほど。。
私が思っていたよりも後者のタイプは多いんですかね?
それよりなりより、バグさんの「仕方なく」に自信をもらいました!

ちょうど3人の方から3様の回答を頂いてありがとうございます!
後者の書き方のせいで、他の方が自分のソースコードを読む時に
読みづらい、、と、言ったような事はなさそうなので、安心しました。
私の中ではこの疑問は解決しましたが、もしよろしければ、
どちらの書き方が多いのか参考までにお聞きしてみたいので、
よろしければ回答をお願いします!

Re:雑談です。

Posted: 2008年9月16日(火) 15:15
by Haru
>Justyさん

ありがとうございます!!
私も同じ理由で前者にしました。
・・・とは、いってもJustyさんのように簡潔なコードを書けるようになるのは
まだまだ先の話だと思いますが。。。(汗

>Mistさん

ありがとうございます!!
私はそのように書いてますね(^^;

Re:雑談です。

Posted: 2008年9月16日(火) 15:39
by たかぎ
私も後者です。
if文に関しては、
if (...)
{
}
else
{
}
です。

C++使いなので、1行がどうしても長くなりがちです。
例えば、
for (std::vector<std::string>::const_iterator first(v.begin()), last(v.end()); first != last; ++first)
{
}
とか。
std::for_eachなどが使えればよいのですが、ループを書かざるを得ないことも少なからずありますので。

それを除いても、経験上、後者の方が圧倒的にミスを少なくできます。
また、関数の長さを40行以内にしようといった場合でも、前者より後者の方が要求が厳しくなります。
簡潔なコードを書く力を磨く上でも、後者を採用しています。

ただし、他の人のコードにまでどうこういうつもりはありません。
この辺りは、『C++ Coding Standards』の「0. 些細なことにこだわるな(何を標準化しないかを知ろう)」で詳しく解説されています。

Re:雑談です。

Posted: 2008年9月16日(火) 16:03
by Haru
>たかぎさん

>ただし、他の人のコードにまでどうこういうつもりはありません。
>この辺りは、『C++ Coding Standards』の「0. 些細なことにこだわるな(何を標準化しないかを知ろう)」で>詳しく解説されています。

Amazonでそのページだけ閲覧してみました。
個人的な趣味や時代遅れの作法を強制してはいけない。
ということは、そんな神経質に気にするほどの事では無いと言うことですね!
勉強になります!

Re:雑談です。

Posted: 2008年9月16日(火) 17:43
by ま~く
ぼくも後者です^^
でも正確には'{'や'}'もインデントするので、GNUスタイルというヤツになるかな?

管理人さんにこーいうアンケート作ってもらうのも面白いかもしれませんね。

Re:雑談です。

Posted: 2008年9月16日(火) 18:19
by めいらる
私は前者ですね(・∀・)
{が先頭にあると何か落ち着かないのでww

if(???){
…;
…;
}

こんな感じになってますw

Re:雑談です。

Posted: 2008年9月16日(火) 19:24
by 組木紙織
私は両方使います。
もう少し言うと、
関数、クラスの定義の時は後者、if(),for()などの時は前者を使います。
理由は、最初に買った入門書がそうなってたからだけです。

javaとか別の言語だったら後者ですね。




Haruさんへ
>個人的な趣味や時代遅れの作法を強制してはいけない。
>ということは、そんな神経質に気にするほどの事では無いと言うことですね!


いえそこはコーディング規約を作って神経質に気にしてください。
一つのプログラムを作る時には統一させてください。

気にしなくていいのは、自分が今までやってきたのと違うからという理由で周りとは別路線でいくことです。

Re:雑談です。

Posted: 2008年9月16日(火) 20:41
by J
私は
if()
{
     //処理
}
派です。
こっちの方が皆さんの言ってるとおり条件式が長くなると、書き忘れのミスが分かりにくくなりますからね。
また、elseは
if()
{
     //処理
}else{
     //処理
}
と書いたりもします。特に理由はありませんが。

>ま~くさん

>管理人さんにこーいうアンケート作ってもらうのも面白いかもしれませんね。

そうですね。こういうアンケートはあっても良いのではないのでしょか?
ま~くさんに一票です。

Re:雑談です。

Posted: 2008年9月16日(火) 21:11
by たかぎ
組木紙織さん

> >個人的な趣味や時代遅れの作法を強制してはいけない。
> >ということは、そんな神経質に気にするほどの事では無いと言うことですね!
> いえそこはコーディング規約を作って神経質に気にしてください。
> 一つのプログラムを作る時には統一させてください。

ここは神経質になる必要はありません。
同じファイルの中では統一すべきですが、それ以上は無用でしょう。
必要ならindentなどのツールを使えば機械的に揃えられます。
厳密なルールを決める必要はなく、既存のコードにスタイルを合わせれば済む話です。

人間の注意力は有限ですので、本質ではない部分に力を割くべきではないのです。

Re:雑談です。

Posted: 2008年9月16日(火) 21:59
by 組木紙織
神経質という言葉が悪かったのか、コーディング規約という言葉が悪かったのか、
私の想定より、強い意味にとられてしまったようなので少し追加で書きます。

複数人でコーディングをすることを前提に考えていたので、コーディング規約という言葉を使いましたが、
私が一番言いたいことは"統一性"です。

複数人でそれぞれ別々にしたり、その日の気分でインデントのルールを変えないように、
統一の仕方はどうれあれ、全体で統一してください。
というつもりで書きました。

Re:雑談です。

Posted: 2008年9月16日(火) 22:15
by たかぎ
> 複数人でそれぞれ別々にしたり、その日の気分でインデントのルールを変えないように、
> 統一の仕方はどうれあれ、全体で統一してください。
> というつもりで書きました。

その日の気分で変えるのは最悪として...

多人数で開発する場合でも、構成上近いソースファイルは同じ人が書くのが普通ですし、後から担当者が変わった場合でも以前のものに合わせれば済む話ですね。
担当者の境界はソースファイル構成上の境界に等しいことが多いでしょうから、構成上の境界を越えたときに少々(見た目の)スタイルが変わっても大した問題ではないはずです。

統一すべきなのは、括弧の位置やインデント幅のように、後から機械的に揃えられるようなことではなく、同じ概念を表すのに同じ用語を用いるとか、エラー処理の方針とか、そういったことです。
特に用語については、日本語の仕様書上の用語を、各担当者が勝手ばらばらに英訳して識別子を命名するようなことは避けなければなりません。

Re:雑談です。

Posted: 2008年9月17日(水) 10:22
by ま~く
Jさん

では管理人さんに頼んでみましょう^^
でも忙しいのかな^^;

Re:雑談です。

Posted: 2008年9月17日(水) 13:16
by Haru
>ま~くさん
>管理人さんにこーいうアンケート作ってもらうのも面白いかもしれませんね。

面白そうですね!私も一票です!


>組木紙織さん

>いえそこはコーディング規約を作って神経質に気にしてください。
>一つのプログラムを作る時には統一させてください。
>気にしなくていいのは、自分が今までやってきたのと違うからという理由で周りとは別路>線でいくことです。

>統一の仕方はどうれあれ、全体で統一してください。
>というつもりで書きました。

あ、説明がたりませんでしたね(^^;
今回の質問のような事は、あまり神経質にならなくても・・・。
という意味での発言でした。
とはいっても、まだまだ駆け出しの私なので、どんなに気をつけたつもりでも
ミスはあると思いますが。。。
自分の中では全体で統一しているつもりです!
というか、統一しないと混乱してしまうので(汗


>たかぎさん

>人間の注意力は有限ですので、本質ではない部分に力を割くべきではないのです。

無限の注意力があれば、どんなに素晴らしいでしょうね(^^;

Re:雑談です。

Posted: 2008年9月17日(水) 15:49
by 管理人
アンケートの件、了解です!
せっかくだから普段気になっているほかのことについても
意見が述べられる色んな項目作りたいですし、
ではどんなアンケートを取ったらいいか意見募集するトピたててみますね。