以下は、悪いコーディング慣行と見なされますか?forループでメソッド呼び出しを行うのは悪い習慣と考えられますか?
for (row = 0; row < 4; row++, printf("\n")) {
for (col = 0; col <= row; col++) {
printf("*");
}
}
以下は、悪いコーディング慣行と見なされますか?forループでメソッド呼び出しを行うのは悪い習慣と考えられますか?
for (row = 0; row < 4; row++, printf("\n")) {
for (col = 0; col <= row; col++) {
printf("*");
}
}
はい、これは悪い習慣とみなされます。
MISRA-C:むしろ私自身の主観的な意見に基づいて、(限定された値の)返事をするよりも、私は広く認識権限引用う2004、13.5ルール:
「3つの文をforループのループは、ループ 制御にのみ関係します。/-/
"第3の表現:ループカウンタ(i)のインクリメントまたはデクリメント"
MISRA-Cは、カンマ演算子の使用を完全に禁止しています。余計に危険なものとみなされます。
シンプルで読みそれだけでは容易ではない、読みやすいと同じアプローチは次のようになります。
for (row = 0; row < 4; row++) {
for (col = 0; col <= row; col++) {
printf("*");
}
printf("\n");
}
は私が優れているこの質問、で応答しましょうか?
while(1) {}
または
for(;;) {}
どちらも同じ結果にコンパイルして、効果的に同じものです。 forループの更新部分に任意のメソッド呼び出しを追加すると、同じことがあなたの質問に当てはまります。それはコンパイルする。それは期待どおりに動作します。主な違いは、読みやすさと好みです。
ほとんどのプログラマーは、メソッド呼び出しをforループの本体にもっぱら入れたいと思っています。大会以外の理由であれ、他の誰かがあなたのforループを見ているときには、ループカウンターなどを見るのに多くの時間を費やす必要はありません。あなたは賢明かもしれませんが、確立されたパターンに固執することをお勧めしますあなたの同僚の方が簡単です。あなたがあいまいな構文を好む同僚と働いているなら、あなたの心の内容までそれに行ってください!
* "あなたがあいまいな構文を好む同僚と働いているなら、あなたの心の内容までそれに行ってください!" *同意しない。あなたの現在の同僚は、有効期限が過ぎてもコードを長く維持しなければならない人ではありません。彼らは仕事をするかもしれないが、後に来る私たちの人たちは、これらの特性を継承することは保証されていない。 –
この永遠のループスタイルの議論がこことそこに続いています。いくつかの人々は(1)が明確で疑問に思っている間(;;)スタイルを信じていました。私はその議論のコンセンサスが( ";;)は"条件は常に真 "のコンパイラ警告を省略しているので、より良いことだと信じています。そして、それは2つの形式の唯一の違いです。 – Lundin
_ "あなたがあいまいな構文を好む同僚と働くならば..." _私はyajoeやCodyに同意しない。個々の開発者は、大文字と小文字を区別して構文を決定する必要はありません。ソリューションは、会社のコーディングスタイルポリシーを作成することです。 – Lundin
いいえ、それはCです。「C」はサイレントの意味ではありませんか? ;) –
@KenThompson皮肉なことに、C言語の本当の意味は非常にわかりにくいです... 'C'は、C言語がB言語に基づいていたので、アルファベットでBの後に来ることを意味します。 BCPLのダウンバージョン」を参照してください。 Cプログラマだけが、このように遠くに引っかかった秘密の言葉で物事を命名します! :) – Lundin