アカウント名:
パスワード:
C に記述標準を設けてバグの入りにくいコードを書けるようにという志で作られた MISRA C ですが、関数の末尾以外の return を禁止するという誰得ルールを筆頭に使い物にならない制約が多すぎます。役に立つところといえば、これをそのまま採用するところの技術力は信用できないという判断材料になることぐらい。
> 関数の末尾以外の return を禁止する
なぜ禁止なのかわからない人にコードは書かせたくないなあ
なぜ禁止すべきでないのかわからない人にコードを書かされたくないなあ。# 論理的な理由があるならそれを書けば済むだけなのに決まってこんな罵倒しか返ってこないんだよな
途中で return すると、リソース解放し忘れるミスが増えるから。コードの見通しの悪さによる保守性悪化と、リソースリークの潜在的危険性を天秤にかけた。理由としてはそれだけ。
MISRA C の主目的は深刻なバグの入りやすいパターンを避けることだから大多数にはバカバカしいルールでも、たった一人の間抜けに躓かないための妥協が多くなる。
C にデストラクタがあればこんなルールは生まれないね。
「そこだけ禁止」言うは易し、行うは難し。文脈に依存したコーディング規約の適用はすぐに破たんする。たとえば、リソースを使っていなかったモジュールを後から使うように変えたら、途中 return は全部書き換えるのか。
そもそも管理リソースを減らしたくて一律に適用しているのだから、本末転倒。
MISRA C使っている業界は工数に占めるコーデングとテストの割合が10%未満だしなあ。大体数年かけて、仕様策定に50%弱、出荷前までのレビューに同じく50%弱使って、設計とコーディングとテストは残り工数でやる感じ。常に10件以上の開発が並行して走っていて兼務するため、いちいち覚えておけないので毎回その場で把握と問題解決をする。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
MISRA C という失敗 (スコア:1)
C に記述標準を設けてバグの入りにくいコードを書けるようにという志で作られた MISRA C ですが、
関数の末尾以外の return を禁止するという誰得ルールを筆頭に使い物にならない制約が多すぎます。
役に立つところといえば、これをそのまま採用するところの技術力は信用できないという判断材料になることぐらい。
Re: (スコア:1, すばらしい洞察)
> 関数の末尾以外の return を禁止する
なぜ禁止なのかわからない人にコードは書かせたくないなあ
Re: (スコア:0)
なぜ禁止すべきでないのかわからない人にコードを書かされたくないなあ。
# 論理的な理由があるならそれを書けば済むだけなのに決まってこんな罵倒しか返ってこないんだよな
Re: (スコア:1)
途中で return すると、リソース解放し忘れるミスが増えるから。
コードの見通しの悪さによる保守性悪化と、リソースリークの潜在的危険性を天秤にかけた。
理由としてはそれだけ。
MISRA C の主目的は深刻なバグの入りやすいパターンを避けることだから
大多数にはバカバカしいルールでも、たった一人の間抜けに躓かないための妥協が多くなる。
C にデストラクタがあればこんなルールは生まれないね。
Re: (スコア:1)
それならそこだけ禁止すればいいだけなのに、なんで全部禁止にしたがるのでしょうね?
その関数がリソース解放しているかどうかぐらい書いている人もレビューする人も分かりますよね。
Re:MISRA C という失敗 (スコア:1)
「そこだけ禁止」言うは易し、行うは難し。
文脈に依存したコーディング規約の適用はすぐに破たんする。
たとえば、リソースを使っていなかったモジュールを後から使うように変えたら、途中 return は全部書き換えるのか。
そもそも管理リソースを減らしたくて一律に適用しているのだから、本末転倒。
Re:MISRA C という失敗 (スコア:1)
当たり前ですが、何か問題でも?
全然破綻している例えになってませんよ。
>そもそも管理リソースを減らしたくて一律に適用しているのだから、本末転倒。
管理リソース削減のためにコードを難解にするほうが本末転倒だと思うのですが、
どうやらMISRA C使っている業界とは住む世界が違うようです。
Re: (スコア:0)
MISRA C使っている業界は工数に占めるコーデングとテストの割合が10%未満だしなあ。
大体数年かけて、仕様策定に50%弱、出荷前までのレビューに同じく50%弱使って、設計とコーディングとテストは残り工数でやる感じ。
常に10件以上の開発が並行して走っていて兼務するため、いちいち覚えておけないので毎回その場で把握と問題解決をする。