2019/01/09

[c/c++][CERT]is系の関数だといいと思うんだけどなぁ

C言語再履修シリーズ。


EXP20-C. 成功、真偽、等価を判定するには明示的な検査を行う
https://www.jpcert.or.jp/sc-rules/c-exp20-c.html


レコメンデーションだからスルーすればいいだけなのだが、よく読んでおかないとイメージだけで判断しているかもしれん。


非0の値をif文などで真として判定する場合、値をそのまま書くのではなく、!=0と比較した方がいいよ、ということだ。
まあ、これはわかる。
ライブラリによって、0が真だったり、boolのtrueが真だったりして、訳がわからないからだ。


気にしたのは、最初の違反コードだ。
"is_banned()"という関数は、偽ならば0、真ならば0以外を返すようになっている。
これを!=0でチェックした方がいいよ、としている。

確かにそうなんだけど、標準ライブラリにもisalpha()みたいなのもあるので、is系の名前を付けた関数だったらそのまま評価してやってもいいんじゃないかなぁ、と思ったのだ。


ただ、名前に依存しているだけやん、といわれると返す言葉もないな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。