netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-07-10 古い日記からの変換データ [長年日記] ▲
_ SCO ▲
Linux でもめてる SCO の意見.大変だなぁ,とは思うのだが,ライセンスの「方法を真似してもダメよ」系は厳しすぎるような気がする.特に,ソースコードが公開されてしまって「コードを読んでしまった」状態のプログラマたちがそれ以外の手法でプログラム書き直すのは難しいのに…….昔みたいに「経験者お断り」なクリーンルーム実装でもしないと無理かしら.http://itpro.nikkeibp.co.jp/free/LIN/NEWS/20030709/1/
_ Eiffel ▲
Assertion, Representation Invariants が気になったので,B. Meyer のオブジェクト指向入門を読み直してみた.
- Assertion は,「クラスが安定した時点」で守られていればよい.安定した時点とは,次のタイミングである.
- インスタンス化された(Create 実行が終了した)直後
- obj.method 形式のリモートコール (外部からの呼び出し)の前後
- メソッドの処理中や,ローカルコール(オブジェクト内部のコール)においてはAssertion は守られなくてもよい.
- クラス不変表明 (Class Invariants) は, すべての事前・事後条件に AND で付加される共通条件である.ただし,「これから追加されるメソッド」に制限を課すという点で,通常の事前・事後条件よりも強い意味を持つ.
- 実現不変表明 (Representation Invariant) は,クラス不変表明のひとつで,「抽象データ型の仕様に対して直接対応するもののない表明」.簡単に言うなら,外部に公開されていないような内部変数に関する表明である.
- 副作用 (Side-Effect) とは,オブジェクトの持つ属性を一つ以上変更する操作のこと.オブジェクトの持つファンクションは,副作用はあってもよいが,抽象状態ではなく具象状態にのみ影響を与えるものでなければならない.
どれも,妥当な意見なので納得.昔読んだときに比べると少しは理解度が上がった気がする.