WhizzClocks
@WhizzClocks

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【if, for】処理内容が一行の場合、括弧をつけるか否か

Discussion

Closed

波括弧をつけた方が見やすい?

普段、コードを書くときはif文,for文の中が一行の処理(例えば、cout,cosole.log,printなどなど)でも波括弧{}を使ってifやforを書くのですが、参考書などを見ると、一行の場合は波括弧を使わずに横一列で書いているコードを見ます。

そこで、ifやforなどの処理の内容がいちぎよの場合、横一列で書くのか、波括弧をつける方がいいのか、どちらの方が良いのでしょうか?

if(a<1) cout << a << endl;

or

if(a<1){
  cout << a << endl;
}
0

言語が不明ですがそれはちょっと置いといて・・・

質問者さんやこのサイトの回答者・閲覧者が個人的に見やすいか否かという話ではなく、質問者さんが組織に属して組織の一員としてコーディングを行っているのであれば組織のコーディングルールに従う、ルールがなければ話し合ってルールを作ってそれに従うという話になると思います。

質問者さんが個人で仕事をしていて、保守にも他人が関わることはないなら、質問者さんの好みで決めればいいことです。

3Like

コーディング規約はチームやプロジェクトで決めて一貫させるべきものです。 見やすさの判断基準は人の主観的なものなのでそのコードに関わる人にとって見やすいと感じられるなら一般論としてどうであれ尊重してください。

私個人の感覚では一文ならブロックにしないことが多いです。

ただ、どちらかというと波括弧は常につけたほうが良いとする論が現代的な風潮になっているようには見えます。 よく主張の根拠にされるのは Google C++ Style Guide です。 制御文には常に波括弧をつけるルールが含まれています。 Google ほど大規模にコードを書いているところがそう考えているならそれなりに故のあることなのでしょう。

他の根拠として新しい言語ではどうなっているかというものがあります。 C 系統の文法を持つ言語において波括弧は if 文の文法の一部ではなく if 文とブロックの組み合わせで使えるようになっていることが多いですが、やや後発の言語 (かつ広く人気のある言語) である Go や Rust では if 文 (式) の一部として波括弧が含まれる形になっており、省略もできません。 言語を設計するなら当然ながら過去の言語の駄目だった部分を改良しようとします。 Rust や Go の言語設計者にとって C 系統言語のこの部分は駄目な部分だという判断があったということです。

3Like

一般的な話はすでに語られているので言及されてない点について…

参考書などを見ると

書籍であれば省スペースのために敢えて定石崩ししている可能性もあります。

例えば、cout,cosole.log,printなど

基本的にはどんな場合も規約に従う&規約で常にブロック化を採用しているものが多いですが
一部、処理によってそうでない場合もあります。

例えばガード節などはブロックなしの1行とする言語・規約が増えている印象です。
また、定型のログ出力に限ってはブロック不要とするプロジェクトなんかもみたことがあります

1Like

参考書などを見ると、一行の場合は波括弧を使わずに横一列で書いているコードを見ます。

そういうのは「紙面の都合」みたいな面からコンパクトな記述を選ぶ可能性もあるんじゃないかな? とか.
(コード例を他者に示すような場面と,実際に使うコードを書く場面とでは考えることが多少なりとも違ってくるのではなかろうか,的な)


私はこんな感じ↓に書いたりしますね.

if(a<1)
{  cout << a << endl;  }
  • 1行で書くとデバッガでのステップ実行とかがしにくい場合がある
  • この程度の記述にこれ以上縦方向のスペースを費やすのは嫌
1Like

Your answer might help someone💌