アカウント名:
パスワード:
C に記述標準を設けてバグの入りにくいコードを書けるようにという志で作られた MISRA C ですが、関数の末尾以外の return を禁止するという誰得ルールを筆頭に使い物にならない制約が多すぎます。役に立つところといえば、これをそのまま採用するところの技術力は信用できないという判断材料になることぐらい。
> 関数の末尾以外の return を禁止する
なぜ禁止なのかわからない人にコードは書かせたくないなあ
おもおかモデが付いてますけど同感です。遵守はやりすぎとしても、理由すらわからない人のコードはなるべく読みたくないです。
今でこそCソースのバグ探しに借り出されることもなくなりましたが、
Q. 入り口ひとつで出口いっぱい、な~んだ?A. お前のコードじゃ!
みたいなプログラム(とくに他人の)は追跡の苦労が尋常じゃありませんし、中途returnのパスの一箇所だけがcloseを忘れていて、それが積もり積もると…みたいなバグに脱力した幾多の経験がフラッシュバックして陰鬱な気持ちになります。
コードの健康のため、return≒gotoくらいに考えておくのが吉だと思いますよ。
なるほど、なぜ同意する人が多いのか謎でしたが見て回ってわかりました。10年前の考え方がまだ残ってるんですね。
C言語の規約なんだからそれでいいんじゃない?C++で強制されたらなんで?になるけど。
で、C++で書いた後「C言語じゃないんで関係ないですよね」が通用するのかどうか調べてみたけどMISRA C++ってのもあるんだな。
http://www.klocwork.com/products/documentation/current-ja/Klocwork_%E3... [klocwork.com]
6-6-5でC言語と変わらず途中returnダメって書いてあってこれ制定した人たちにはがっかり。例外は禁止してないところからも実際に何を理由に禁止にしたいのかさっぱりわかりません。
EC++には例外がないから。
という説。
15-x−xで例外についてチェック項目があるんでそれは理由にならないですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
MISRA C という失敗 (スコア:1)
C に記述標準を設けてバグの入りにくいコードを書けるようにという志で作られた MISRA C ですが、
関数の末尾以外の return を禁止するという誰得ルールを筆頭に使い物にならない制約が多すぎます。
役に立つところといえば、これをそのまま採用するところの技術力は信用できないという判断材料になることぐらい。
Re: (スコア:1, すばらしい洞察)
> 関数の末尾以外の return を禁止する
なぜ禁止なのかわからない人にコードは書かせたくないなあ
Re:MISRA C という失敗 (スコア:0)
おもおかモデが付いてますけど同感です。
遵守はやりすぎとしても、理由すらわからない人のコードはなるべく読みたくないです。
今でこそCソースのバグ探しに借り出されることもなくなりましたが、
みたいなプログラム(とくに他人の)は追跡の苦労が尋常じゃありませんし、
中途returnのパスの一箇所だけがcloseを忘れていて、それが積もり積もると…
みたいなバグに脱力した幾多の経験がフラッシュバックして陰鬱な気持ちになります。
コードの健康のため、return≒gotoくらいに考えておくのが吉だと思いますよ。
Re: (スコア:0)
なるほど、なぜ同意する人が多いのか謎でしたが見て回ってわかりました。
10年前の考え方がまだ残ってるんですね。
Re:MISRA C という失敗 (スコア:1)
C言語の規約なんだからそれでいいんじゃない?
C++で強制されたらなんで?になるけど。
で、C++で書いた後「C言語じゃないんで関係ないですよね」が通用するのかどうか調べてみたけどMISRA C++ってのもあるんだな。
http://www.klocwork.com/products/documentation/current-ja/Klocwork_%E3... [klocwork.com]
6-6-5でC言語と変わらず途中returnダメって書いてあってこれ制定した人たちにはがっかり。
例外は禁止してないところからも実際に何を理由に禁止にしたいのかさっぱりわかりません。
Re: (スコア:0)
EC++には例外がないから。
という説。
Re: (スコア:0)
15-x−xで例外についてチェック項目があるんでそれは理由にならないですね。