アカウント名:
パスワード:
#define ZERO (1)
これはC言語かな?
むしろ言語として真偽値がないことの方が問題なような。#そりゃあ古い言語だからねえ……。
>if (flag == TRUE) ...>みたいなコード書く方が悪い。こっちは必ずしも悪くないような。flag が、TRUE, FALSE, UNDEFINED, ERROR みたいな値を取るかもしれないんだから。
この書き方は「あんまり良くない」けれど、C言語だと機能的に制限があるので仕方なかった。
ここはif (flag) {}もしくはif (!flag) {}でしょう。
残念ながらMISRA-Cでは以下の規約に引っかかります。推奨なんで必須では無いんですけどね。
13.2 A オペランドが実質的なブール型である場合を除き、0との比較テストは明示的に行うべきである。
組み込みでCとかだとまず引っかかるんじゃないかな。
"flag"だから「実質的なブール型である」べき。MISRA-Cがコーディングルールだと宣っている現場を見たことがあるが、outputはクソっぽかった。(具体的にはとても外に言えないが)理念を取り入れず外形だけ取り繕うとしているから、常にバグに追いかけられている感じ。
MISRA-Cに遵守するには、下記の3つのステップが必要である。 [openrtp.jp] * どのように各ルールが適用されているかのチェック手法を示す合致マトリクスの作成 * ルールから逸脱する場合の手順 * 作業手順を、品質管理システム中の正式なものにする
が全く無く、ルールに固執して迂回表現を取っていたりするんで、何をやってんだか読みきれないコードが出来上がるという...
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
矛盾した定義 (スコア:0)
#define ZERO (1)
Re: (スコア:3)
ところが両方を連結すると、とたんに動かない。調査してビックリ。
A社のヘッダーファイル → #define TRUE 1
B社のヘッダーファイル → #define TRUE (-1)
てのがありました。
clausemitz
Re: (スコア:0)
if (flag == TRUE) ...
みたいなコード書く方が悪い。
真偽値の判定は常にfalse (= 0)と比較すること。
Re: (スコア:1)
これはC言語かな?
むしろ言語として真偽値がないことの方が問題なような。
#そりゃあ古い言語だからねえ……。
>if (flag == TRUE) ...
>みたいなコード書く方が悪い。
こっちは必ずしも悪くないような。
flag が、TRUE, FALSE, UNDEFINED, ERROR みたいな値を取るかもしれないんだから。
この書き方は「あんまり良くない」けれど、C言語だと機能的に制限があるので仕方なかった。
Re: (スコア:1)
ここは
if (flag) {
}
もしくは
if (!flag) {
}
でしょう。
Re: (スコア:0)
残念ながらMISRA-Cでは以下の規約に引っかかります。
推奨なんで必須では無いんですけどね。
13.2 A オペランドが実質的なブール型である場合を除き、0との比較テストは明示的に行うべきである。
組み込みでCとかだとまず引っかかるんじゃないかな。
Re:矛盾した定義 (スコア:1)
"flag"だから「実質的なブール型である」べき。
MISRA-Cがコーディングルールだと宣っている現場を見たことがあるが、outputはクソっぽかった。(具体的にはとても外に言えないが)
理念を取り入れず外形だけ取り繕うとしているから、常にバグに追いかけられている感じ。
が全く無く、ルールに固執して迂回表現を取っていたりするんで、何をやってんだか読みきれないコードが出来上がるという...
Re: (スコア:0)