タグ

assertionに関するyassのブックマーク (3)

  • Mongrel2が面白い - yarbの日記

    クリーンなCで書かれたWebサーバ「Mongrel2」を読んでみた。コードの内外ともにドキュメントはしっかりしているし、関連ブログエントリもあって、非常に勉強になる。何より、毒舌のZed Shawの書く文章は面白くて飽きないのがいい。 例えば、src/adt以下にはユーティリティ関連のライブラリが入っている。伸び縮みするdarray.cや、ディクショナリ、ハッシュテーブル、リストといった車輪の猛発明なところが、Cを使ったデータ構造の基という感じ。リストの実装で、各関数の先頭にassertを並べて条件を満たしているかをチェックすることで、整合性を取るのを呼び出しコード側の責任にしているアプローチになるほどなぁと思った。クライアントコードが変なことしたら、ごっそり落ちるべきってことだろうか。 /* * Insert the node ``new'' into the list immedia

    Mongrel2が面白い - yarbの日記
  • プログラムの品質を高めるためのアサーションとは?

    契約による設計(Design by Contract) プログラムの品質向上手法として、契約による設計(Design by Contract、以下DBC)という手法があります。DBCでは、あるオブジェクトに対するメソッド呼び出しを行っているとき、プログラムが正しく動作している際に満たされるべき条件として、以下の3条件を規定しておきます。 事前条件…… メソッド呼び出し時の引数が満たすべき条件 事後条件…… メソッドによる処理が終了した時点で満たすべき条件 不変条件…… メソッドによる処理により変化しないものを規定する条件 以上の3条件のうちいずれかの条件が満たされない場合、プログラムは正しく動作していない、つまりバグがあることになります。 例として、ある実数xの平方根yを計算するメソッドを作成する場合の事前条件と事後条件について考えます。実数xが0以上の値でなければ平方根を求めることができ

    プログラムの品質を高めるためのアサーションとは?
  • Googleが開発したJavaデバッグを簡単にする新技術「cofoja」 | エンタープライズ | マイコミジャーナル

    Java Programming Language Googleの20%プロジェクトからJava向けの新しい技術「cofoja (Contracts for Java)」が公開された。既存の実装に大きく手を加えることなく、デバッグをより簡単にしてくれる効果が期待できる。バグは些細なコードが起こすものだったりするが、それを追跡して発見するのは時に困難を極める。これは問題が発生した箇所と、実際にバグがある箇所が大きく離れていることが理由になっていることもある。問題発生箇所とバグ発生箇所を近くにまとめることができれば、それだけバグ発見も取り組みやすくなる。 cofojaはこれを簡単に実現するための技術。インタフェースに制約表現を追加可能にするところがポイントとなっており、クラスの実装に手を加えなくてもインタフェースに制約表記を追加することで実行時にチェックできるようになる。ブログに掲載されている

  • 1