閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

IDE はどこまでお節介をやくべきか

なんとなしに、警告を「全て表示」する設定にしてプログラムをコンパイルしてみたとこころ、 3400 もの警告が吐き出されてしまいました。えーと……。一年と半年前、ここに常駐し始めた当時はただ単にコンパイルしただけで 1000 を超える警告が吐き出され、げんなりしながらそれでも徐々に修正していってだいぶ減らせたと思っていたのですが……。まあ、画面を含むクラスでの警告はかなり増えるだろう事は予想していたのですが。

C++ Builder に付属する RAD ツールで VCL のイベント (メソッド) を生成すると、そのメソッドには基本的に引数として呼び出しもとのオブジェクト (ボタンとか) のポインタが渡されるようになっています。でもって、実際に中身を実装したときに、この引数を使用しないパターンが結構多いため、警告を全て表示するようにすると、「メソッドの中で引数を使ってない」と怒られてしまう罠があったりします。

VC6 では確か、 IDE によって生成されるメソッドで使用していない引数に関してはコメントアウトされていたような記憶があるのですが、 C++ Builder でもそれをやってくれると、デフォルトでこんな警告が表示されなくて済むのに。……と思ったのですが、しかしそうしてしまうと、今度は逆に引数を使用したくなった場合に自分でコメントを外さなければならないといった面倒も生じてくるわけで、余計なお節介なような気も。まあ C++ Builder のお手軽さを考えると、いまの動作の方が余計な手間がかからない分いいのでしょうね。

それにしても画面いっぱいに「パラメータ 'Sender' は一度も使用されない」という文字列が表示されているさまは、ある意味爽快です。 Sender というのは、前述した C++ Builder が生成するメソッドに渡される引数の名前です。

というかこの警告、放置しておいて実害ってあるんでしょうか。プションでオフにしてしまっても別に問題ないような気もします。でも警告が出るからには理由があるのだろうし知らぬままに無視するのも……。引数をコメントアウトしておくと、コンパイル時に最適化で引数のコピーが消されるとか何かあるんでしょうか。調べておいた方がいいかな。