2009-01-01から1ヶ月間の記事一覧

returnはCommitで、throwはReset?

うーん、 returnをすることもthrowをすることも、 実際には上位に対して何らかの状態を伝えるために戻る、ということをするわけで、 bool File::open(const char* path) { if (!FileSystemOpen(&handle_, path)) { return false; } ... }はダメで、 bool Fil…

loggingにはgotoを使いたいだろうか?

田辺さんからご指摘があったので。元のコード。 public function getSystemValue($key) { $this->getLogger()->log(LOG_DEBUG, 'start'); // すでに読み込み済みデータの場合はそのデータを使用 $value = $this->findCache($key); if (!is_null($value)) { g…

途中でreturn編 ちょっとりふぁくと

とりあえず、関係のないところでつっこまれたのでちょっとりふぁくと。 あー、やっぱり。予想通り「ながら」処理の典型的なのが出てきました。「ながら」処理というのは複数の事を一度に実行しようとする実装です。「ステータスを変更する必要があるかどうか…

常識的に考えてネストしすぎだお前

int Hoge::hoge() { if (initialized_) { int min = 100000; for (int x = 0; x < width_; ++x) { for (int y = 0; y < height+; ++y) { if (items_[x][y].flag & ENABLE) { int length = items_[x][y]; if (length < min) { min = length; } } } } return m…

途中でreturnしたっていいじゃない、人間だもの

bool Person::action() { if (isStand()) { fsm_.change(&standState_); return true; } if (isMove()) { fsm_.change(&moveState_); return true; } return false; } これを、 bool Person::action() { bool result = false; if (isStand()) { fsm_.change(…

newしたらスタックかレジスタを探る

newした位置が解るnew が以外と人気ですが、 泥臭くない方法で(寧ろハイパー泥臭い方法で)、 newの中で自分を呼び出した関数のアドレスをスタックかレジスタから引っ張ってきて、 それを保持しておく、というワザもあります。 ポータビリティは最低ですが…

途中でreturnしたいんだワン

ということで、簡単なステートマシンを書いてみた。 書き殴りではあるが、 http://codepad.org/8wkH7y5G で、この中でこんなコードを書いた。 bool Person::action() { if (isStand()) { fsm_.change(&standState_); return true; } if (isMove()) { fsm_.ch…

メソッドの途中で

returnを書くのはあまり好きじゃないって、 アホじゃないのか!!! 途中でreturnしないとネストがひどいことになるでそ、 とか思ってしまった。 gotoはCの時はエラー処理からの脱出などで使ったけど、 ここ数年はC++なので使っていないなあ。

プログラマは動くプログラムが書けたら優秀なのか?

んなわきゃねー、 きちんと動いているようなもののソースをみてみると こいつバカじゃないのか、なんていうコードが眠っている。 なぜ、こんなことになってる? 愛だ、愛が足りないんだ! 動く物をつくれるからといって、 その人間がプログラマとして優秀だ…

メンバ関数ポインタは悪だろうか?

Cの関数ポインタに疲れていると、関数ポインタはまるで悪のような気がしてくるのだけれど、 では、メンバ関数ポインタは悪だろうか、というような事。 STLなどで指定する場合は置いておいて、自分で呼び出す場合、 「仮想関数でいいじゃん?」 ってなことが…

にいってきました。今回は良くも悪くも、 「C/C++へのLua組み込みの実践」は Luaっていうのはどんなものなんだろう? と思った人向けになっていたと思います。 本を既に読んだ人にとっては目新しい事はなかったですが、 これを機に採用事例が増えれば良いな…

newした位置が解るnew

が欲しい。 といつも思っているんだけれど、 なかなかそうはいかないのよね、というお話。デバッグ用のメモリ確保ルーチンなどには、 そのメモリブロックが何の用途で使われているのかヘッダに記憶しておいたりする。 要するに、 new (__LINE__, __FILE__) H…