2009年7月16日のブックマーク (2件)

  • 実績があるコードと製品に使った事があるコードは違う - 神様なんて信じない僕らのために

    よくあることなんだけれど、「社内の実績があるコードを使え」と言われて見てみると、 「これはひどい」というコードであることがある。 そういう人が言っている「実績がある」は「製品に使用した事がある」なんだよな。 例えばあるデバイスから、非同期で読み書きするようなモジュールがあったのだが、 書き込みに対する操作で、 HogeDeviceWriteInitialize HogeDeviceWriteExecute となってて、 Initializeの中で書き込み先アドレス、書き込み元アドレス、書き込みサイズを記憶し、 「なぜか」 Executeの中で、デバイスに対する非同期リクエストを発行し、以降はそれを待つなんていう仕組みになってた。 // 構造だけ void HogeDeviceWriteInitialize(int addr, const void* data, size_t size) {

    実績があるコードと製品に使った事があるコードは違う - 神様なんて信じない僕らのために
    kilrey
    kilrey 2009/07/16
    単一文化の弊害かも。
  • constメンバ関数は重要 - Faith and Brave - C++で遊ぼう

    私は基的に、C++でソース書くときはやたらめったらconst付けます。 なぜならHaskellが好きだからです(ぇ じゃなくて、状態の変更によるバグを減らすためです。 しかし、他人が書いたソースを見てると、オブジェクトのconst操作を考えて設計されてないことが けっこうあり、Is〜とかGet〜といった名前の関数の中でメンバの状態を変更してたりします。 これはとくに、JavaやC#のようなconstメンバ関数がない言語からC++に移植するようなときに 起こりやすいのですが、C++でもconstメンバ関数の存在を知ってか知らずかconstが付いてないことが多々あります。 書籍でいうと、『Game Programming Gems』では明らかにconst操作なメンバ関数にconst付いてないですね。 C++で大きなプログラムを組む際は、元となるコード(移植元やライブラリ)がオブジェクトのco

    constメンバ関数は重要 - Faith and Brave - C++で遊ぼう
    kilrey
    kilrey 2009/07/16
    私はconstを考えていない設計のクラスをメンバに持つなら躊躇せずにmutableを付ける。const性を考慮していないダメクラスという点を明示するため。