<< 前 ホーム 次 >>

bakaid: 20110314

MFCを使ったバカコードその1:

CPoint point = (0, 0);

このコード、かなり前から見てた気がするんだけど、ある日、
フと「何やってんだ、これ?!」って気づいた。

これ、右辺はただのカンマ式なんだよね。だから:

CPoint point = 0;

と同じ。で、CPointにはCPoint(LPARAM)っていうコンストラクタが
あって、それに変換される。つまり:

CPoint point = CPoint(0);

になる。CPoint(LPARAM)がどういうことをやるかの詳細は各自
MSDNを見てもらうことにして。こんなことやるんだったら:

CPoint point(0, 0);

ってやったほうがいい。

バカコードその2:

CString str = L"";

これをバカコードっていうと「なんで?!」って思う人もいるかも
しれないけど、これは2つの罪を犯している。

1つは、CStringは、引数なしのコンストラクタを使えば、
空文字列のオブジェクトになることがドキュメントに明示されて
いる。つまり、上のコードを書いたヤツはドキュメントを読んで
いない。そして、それよりずっと罪は軽いが、効率の悪いコードだ
ということ。

確かに、MSDNのドキュメントは非常にわかりにくいところが
ある。ただ、それでも、MSDN内で検索すれば、CPointとか
CStringのドキュメントはすぐに見つかる。

こういう「なんとなく」書いてしまうコードはダメだということは
前にも書いたけど。こういう「なんとなく」を積み重ねると、
コンパイラの警告を無視したりと雑なプログラミングになる。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails