おまいら、DbC(契約による設計)ってやってる?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/02/09(火) 13:51:55とりあえず参考URL
www.kmonos.net/alang/d/2.0/dbc.html
www.fides.dti.ne.jp/~oka-t/cpplab-dbc.html
www.02.246.ne.jp/~torutk/cxx/design/designbycontract.html
0002デフォルトの名無しさん
2010/02/09(火) 21:12:190003デフォルトの名無しさん
2010/02/09(火) 21:28:05意識していないからメタメタになってるだけの気がする。
それゆえ軽視されがちだけど、一度は学んでおくべきだよな。
0004デフォルトの名無しさん
2010/02/09(火) 22:15:37言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0005デフォルトの名無しさん
2010/02/10(水) 08:06:14入出力以外の部分でassert使うことはある。
0006デフォルトの名無しさん
2010/02/11(木) 02:59:08取り敢えず EiffelEnvision ダウンロードしてみる。
00076
2010/02/11(木) 04:22:300008デフォルトの名無しさん
2010/02/11(木) 09:37:47何で広まってないんだろう?
0009デフォルトの名無しさん
2010/02/12(金) 09:54:380010デフォルトの名無しさん
2010/02/12(金) 10:01:560011デフォルトの名無しさん
2010/02/12(金) 21:51:42まともに事前条件・事後条件を考えられるやつなんて少ないし、
書いてもまともに検証ができるわけじゃないから効果が薄い。
そして高コスト。広まるわけがない。
0012デフォルトの名無しさん
2010/02/12(金) 22:14:00システム開発でJUnitやNUnitを使わない連中は正気の沙汰とは思えん。
0013デフォルトの名無しさん
2010/02/12(金) 22:45:40単体テストが外延(のサブセット)でDbCは内包
0014デフォルトの名無しさん
2010/02/13(土) 12:15:40全く同意。
うまくやるには予めなすべきことが全てみえてなければ
ならない。しかし、それができているならこんな手法を
取る必要もない。
0015デフォルトの名無しさん
2010/02/13(土) 12:43:28>>14
そういうもんなのかねぇ。
コーディングしてるうちに自ずと見えてくると思うんだけどなぁ。
それに、クラスとかモジュール単位で考えたときに、提供する側と
利用する側でエラーの責任の所在を分離できるのは利点だと思うんだが。
0016デフォルトの名無しさん
2010/02/13(土) 12:49:31Object-Oriented Software Construction(Mayer)で取り上げられてる
0017デフォルトの名無しさん
2010/02/13(土) 13:00:27それ知らないヤツはこのスレ覗かないだろ
0018デフォルトの名無しさん
2010/02/13(土) 13:10:28一度やってみるといいよ
事前条件は書けても事後条件が書けなくて悩むことになるから
事後条件が書けないってのは仕様をわかってないことと同義なんだけど
最初から仕様をきっちり把握するのがいかに難しいことかと痛感する
その上せっかく書いた事前・事後条件の正しさを証明するのは難しい
0019デフォルトの名無しさん
2010/02/13(土) 13:25:200020デフォルトの名無しさん
2010/02/13(土) 13:43:56関数型言語を使えば形式的な思考ができるみたいな発想俺は嫌いだ
関数型言語を楽に使いこなせるようなやつならDbCも楽というなら御意
0021デフォルトの名無しさん
2010/02/13(土) 14:24:27メソッド単位で細分化して考えればそんなに大変でもないと思うけどな>仕様の把握
というか、そのメソッドで行うこと=事後条件と考えてやってるんだが
0022デフォルトの名無しさん
2010/02/13(土) 14:26:41最終的に使用を満たす命題を作るだけの簡単なパズルです
0023デフォルトの名無しさん
2010/02/13(土) 15:49:31思ってないでやってみれば?
0024デフォルトの名無しさん
2010/02/13(土) 16:36:58実際にやってみての感想だよ
0025デフォルトの名無しさん
2010/02/13(土) 17:02:27なんかサンプル貼ってよ
0026デフォルトの名無しさん
2010/02/13(土) 17:08:19002726
2010/02/13(土) 17:09:020028デフォルトの名無しさん
2010/02/13(土) 17:15:54なんで意味がないと思ったんだ?
0029デフォルトの名無しさん
2010/02/13(土) 17:25:20仕様決めた人なら、事後条件を正しく記述できる可能性はあるだろうけど。
0030デフォルトの名無しさん
2010/02/13(土) 17:30:580031デフォルトの名無しさん
2010/02/13(土) 17:39:550032デフォルトの名無しさん
2010/02/13(土) 17:44:33インタフェースだけ書いて全てのテストが最初はNGになるように書くから。
0033デフォルトの名無しさん
2010/02/13(土) 17:46:13DbCは設計技法
0034デフォルトの名無しさん
2010/02/13(土) 17:49:34契約だから事前条件と事後条件は両方揃って意味がある
それが顧客の要求(システムの仕様)を満たすかどうかは別問題
validationとverificationを混同したらあかん
0035デフォルトの名無しさん
2010/02/13(土) 19:45:41納期はそのままだから、とりあえず動くものをってなってしまう。
まぁようはプロジェクト管理ができてないわけだけど。
0036デフォルトの名無しさん
2010/02/14(日) 11:24:26契約の継承できるか?
オーバーロードされた関数間の契約の合成も
0037デフォルトの名無しさん
2010/02/14(日) 11:33:45それむしろJavaのassertでできないw
0038デフォルトの名無しさん
2010/02/14(日) 18:06:00むしろってついてるから、できるのかできないのかわからないや
0039デフォルトの名無しさん
2010/02/14(日) 18:56:08自分でがんがるしかない
0040デフォルトの名無しさん
2010/02/16(火) 03:58:03だからあれは言語に組み込まないといけないんじゃない?
0041デフォルトの名無しさん
2010/02/16(火) 04:21:480042デフォルトの名無しさん
2010/02/16(火) 12:34:11あれはCのasert並みであってDbCとは無関係
つかEiffelだって完全にはできてないんだぞ
0043デフォルトの名無しさん
2010/03/02(火) 22:58:12http://lists.boost.org/Archives/boost/2010/02/162325.php
しかし例題が
http://dbcpp.sourceforge.net/example/Crowl2006/vector/main.cpp
事前事後条件に埋もれて本体コードがみにくいぜ!
0044デフォルトの名無しさん
2010/03/09(火) 19:21:51C++やJavaとか広く普及してる言語で簡潔に記述する方法が確立されてないのが、
DbCが広まらない原因なんじゃなかろうか
0045デフォルトの名無しさん
2010/03/17(水) 21:31:27Dbcを言語機能に組み込んでるの
0046デフォルトの名無しさん
2010/05/18(火) 00:17:48こういうの考えたんだがどうよ
C#の例。属性を使って事前条件、事後条件を設定する。
Javaはアノテーションを使う。
public class AAA {
[return : IsNull]
public object GetData([IsNull] string key){
...
}
}
004746
2010/05/18(火) 00:20:080048デフォルトの名無しさん
2010/09/05(日) 13:59:290049デフォルトの名無しさん
2010/10/23(土) 10:53:31他にはアレとかソレとかあるに違いないよ
0050デフォルトの名無しさん
2010/12/18(土) 10:44:16契約の内容がマニュアルだかソースのコメントだかに記載されてさえいれば
それでDbCの本懐は果たしてると言えるんじゃないかと
0051デフォルトの名無しさん
2010/12/18(土) 11:53:270052デフォルトの名無しさん
2011/08/31(水) 02:10:21.48assertのほうが先にあったの?それとも契約プログラミングの概念が出てからassertが出てきた?
0053デフォルトの名無しさん
2011/08/31(水) 08:50:02.78ANSI Cは1989年だな。assertマクロがいつごろから使われていたかは知らん。
0054デフォルトの名無しさん
2011/10/24(月) 19:44:08.90呼ばれる側、呼ぶ側、ユニットテスト、間接的に依存する所と、
散らばって悲惨なことに。どうすりゃきれいに行くんだろうか
0055デフォルトの名無しさん
2012/05/18(金) 23:10:10.10■ このスレッドは過去ログ倉庫に格納されています