[解決済み] 1行のifやループに中括弧(={})を使用する目的は何ですか?
質問
C++の講師の講義ノートを読んでいるのですが、以下のように書かれています。
<ブロッククオート- インデントを使用する // OK
- 演算子の優先順位に頼らない - 常に括弧を使用する // OK
- 常に { } ブロックを使用する - たとえ1行でも //. 不可 なぜ?
- 比較の左側にあるConstオブジェクト // OK
- unsigned は >= 0 の変数に使用する // 良いトリックだ
- 削除後にポインタをNULLにする - 二重削除防止 // 悪くない
3つ目のテクニックは、私にはよくわからないのですが、1行を
a
{ ... }
?
例えば、こんな変なコードを見てみましょう。
int j = 0;
for (int i = 0 ; i < 100 ; ++i)
{
if (i % 2 == 0)
{
j++;
}
}
と置き換えてください。
int j = 0;
for (int i = 0 ; i < 100 ; ++i)
if (i % 2 == 0)
j++;
1stバージョンを使用するメリットは何ですか?
解決方法は?
を変更することも試みましょう。
i
をインクリメントすると
j
:
int j = 0;
for (int i = 0 ; i < 100 ; ++i)
if (i % 2 == 0)
j++;
i++;
いやーん。Pythonからすると、これは大丈夫そうに見えますが、実はそうではなく、これと同等です。
int j = 0;
for (int i = 0 ; i < 100 ; ++i)
if (i % 2 == 0)
j++;
i++;
もちろん、これは愚かなミスですが、経験豊富なプログラマーでも犯しかねないことです。
もう一つの非常に良い理由 で指摘されています。 ta.speot.isさんの回答 .
A サード
を入れ子にしたものが考えられます。
if
's:
if (cond1)
if (cond2)
doSomething();
では、今、次のようにしたいとします。
doSomethingElse()
いつ
cond1
が満たされない(新機能)。そこで
if (cond1)
if (cond2)
doSomething();
else
doSomethingElse();
というのは明らかに間違っています。
else
は内側の
if
.
編集部:注目されているようなので、私の見解を明らかにします。私が答えていた質問は
1stバージョンを使用するメリットは何ですか?
どのように説明しましたか。メリットもあるのですが しかし、IMOでは、"always"のルールが常に適用されるわけではありません。だから、私は以下のことを全面的に支持するわけではありません。
<ブロッククオート常に{ }ブロックを使用する - たとえ1行でも // OKではありません、なぜですか?
とは言いません。
いつも
を使用します。
{}
ブロックを作成します。単純な条件や動作であれば、「しない」。もし、誰かが後から入ってきて、機能を追加するためにコードを変更するかもしれないと思ったら、そうしてください。
関連
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] GCC/G++コンパイラで-pedanticを使用する目的は何ですか?
-
[解決済み] なぜリストの初期化(中括弧を使用)が他の方法より優れているのですか?
-
[解決済み] 講師が書いたC言語のファイルは、なぜ最初の行に#が一つ付いているのですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】NULL終端文字列の根拠は何ですか?
-
[解決済み】C++のVectorをforループで反復処理する。
-
[解決済み] C/C++プリプロセッサで、パウンド/ハッシュ記号(#)を1行で記述する目的は何ですか?
-
[解決済み] 中括弧内のForループ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] ポインタを削除した後、NULLにするのは良い習慣ですか?