C/C++言語の迷信集

株式会社きじねこさんとこの記事で。

とりあえず memset で初期化

あー。
やってる奴がごくごく身近にいて、本当にそうか?って思ったけど、やっぱりなんでもmemsetすりゃ綺麗にゼロ塗りされるわけではないらしい。

配列を初期化したかったらこうすりゃ良いらしい。

A a[10] = { 0 };

コンストラクタで自身をゼロクリア

これも同じ奴がやってるなぁ。ダメなのはなんとなく分かるけど、根拠が曖昧な気がする。C互換型ではないオブジェクトを std::memset でクリアすることはできないってのが根拠? それは言語の仕様? C互換型ではないオブジェクトというのは具体的にどういう状態? 起こりうる問題は?

コンパイラはプログラマの心を察してくれる

これは、気持ちはよく分かる。

ソースファイルの末尾に }

これ正直、言語によっては「あったらダメ!」ていうのがあるから微妙なんよねー。
すべての言語共通でこうして欲しい。末尾に改行入れておいたほうが何かと楽だし。

コンパイルエラーが出るのでアクセス指定子を修正

これも気持ちは分かる。でもやっちゃったらデスマが待ってるのよね。

細かく書いてくれて大いに助かるんだけど、迷信っつーと微妙なとこだ。世の中わりと「だいたいあってる」で回ってる部分もあるし。
C言語のgetsってだめらしいねー」って言ってる人に「仕様的にはなんたらかんたら(3分くらい)でダメな訳じゃないんですよ」って言っても「ふーんそうなんだー。ありがとー」で終わりそう。