<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Complex Assertions using C# 3.0</title>
	<atom:link href="http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/feed/" rel="self" type="application/rss+xml" />
	<link>http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/</link>
	<description>Closed weekends and holidays.</description>
	<pubDate>Sat, 17 May 2008 14:56:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: Søren on DBC &#171; The Wandering Glitch</title>
		<link>http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20621</link>
		<dc:creator>Søren on DBC &#171; The Wandering Glitch</dc:creator>
		<pubDate>Mon, 05 May 2008 11:27:37 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20621</guid>
		<description>[...] Skovsbøll wrote a excellent follow up to a little post I did a while back on using C# 3.0 expression trees for representing predicates in design by contract. The conclusion of that series was that C# was [...]</description>
		<content:encoded><![CDATA[<p>[...] Skovsbøll wrote a excellent follow up to a little post I did a while back on using C# 3.0 expression trees for representing predicates in design by contract. The conclusion of that series was that C# was [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Soren On Software &#187; Design by C#ntract</title>
		<link>http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20614</link>
		<dc:creator>Soren On Software &#187; Design by C#ntract</dc:creator>
		<pubDate>Fri, 02 May 2008 20:40:25 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20614</guid>
		<description>[...] when I read The Wandering Glitch&#8217;s series about doing Design By Contract in C# using the new functional possibilities, I was thrilled. It goes a long way to let us specify pre [...]</description>
		<content:encoded><![CDATA[<p>[...] when I read The Wandering Glitch&#8217;s series about doing Design By Contract in C# using the new functional possibilities, I was thrilled. It goes a long way to let us specify pre [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Matthews</title>
		<link>http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20345</link>
		<dc:creator>Andrew Matthews</dc:creator>
		<pubDate>Tue, 22 Jan 2008 01:13:54 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20345</guid>
		<description>Hi Waterbreath,


Thanks - see the next post i made, where I introduce Lambda Expressions to make debugging more intuitive.

I took the technique for storing serialized snapshots from Juval Lowy's Transactional, where he used serialisation to store the state in case of rollback. It will create an overhead, but as you will have noticed, the parts that take the snapshots are marked with Conditional("DEBUG"), so that they will not encumber the system in production. The point of this is to augment debugging facilities. After all, finding the constraint violation in production using DBC is not going to help (tho it would be nice) since the program is still broken.

I see your point about the nesting of scopes - it was kind of unnecessary really. A simple static class would have sufficed.

Cheers

Andrew</description>
		<content:encoded><![CDATA[<p>Hi Waterbreath,</p>
<p>Thanks - see the next post i made, where I introduce Lambda Expressions to make debugging more intuitive.</p>
<p>I took the technique for storing serialized snapshots from Juval Lowy&#8217;s Transactional, where he used serialisation to store the state in case of rollback. It will create an overhead, but as you will have noticed, the parts that take the snapshots are marked with Conditional(&#8221;DEBUG&#8221;), so that they will not encumber the system in production. The point of this is to augment debugging facilities. After all, finding the constraint violation in production using DBC is not going to help (tho it would be nice) since the program is still broken.</p>
<p>I see your point about the nesting of scopes - it was kind of unnecessary really. A simple static class would have sufficed.</p>
<p>Cheers</p>
<p>Andrew</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: WaterBreath</title>
		<link>http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20340</link>
		<dc:creator>WaterBreath</dc:creator>
		<pubDate>Mon, 21 Jan 2008 18:13:17 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20340</guid>
		<description>This is a pretty cool way to wedge DBC into C# with minimal boilerplate.  But I have some reservations.

I have to admit I'm a little uncomfortable with the way you've implemented preservation of the "before" state of the object....

I realize that in order to support the "before" functionality, you need to be able to copy the object's properties...  But if they are complex objects, it seems like storing off a copy of every property regardless whether they are actually referenced in the constraints could sometimes have prohibitive performance impacts, even for debug/test mode.

Then there's the text overhead of XML in memory.  Though without attributes and all that jazz, it might not be so bad.

I'm also not sure I see the value in keeping a static stack of scopes.  This might be useful with recursion I suppose.  But beyond that, it seems like it would imply a very tight coupling between different methods.

I know the contract should be thought of as being one layer above the algorithm/code itself.  But if constraints in a method are dependent on what's going on in the calling method, that really implies to me that the methods are way too tightly coupled.</description>
		<content:encoded><![CDATA[<p>This is a pretty cool way to wedge DBC into C# with minimal boilerplate.  But I have some reservations.</p>
<p>I have to admit I&#8217;m a little uncomfortable with the way you&#8217;ve implemented preservation of the &#8220;before&#8221; state of the object&#8230;.</p>
<p>I realize that in order to support the &#8220;before&#8221; functionality, you need to be able to copy the object&#8217;s properties&#8230;  But if they are complex objects, it seems like storing off a copy of every property regardless whether they are actually referenced in the constraints could sometimes have prohibitive performance impacts, even for debug/test mode.</p>
<p>Then there&#8217;s the text overhead of XML in memory.  Though without attributes and all that jazz, it might not be so bad.</p>
<p>I&#8217;m also not sure I see the value in keeping a static stack of scopes.  This might be useful with recursion I suppose.  But beyond that, it seems like it would imply a very tight coupling between different methods.</p>
<p>I know the contract should be thought of as being one layer above the algorithm/code itself.  But if constraints in a method are dependent on what&#8217;s going on in the calling method, that really implies to me that the methods are way too tightly coupled.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: C# by Contract - Using Expression Trees &#171; The Wandering Glitch 2</title>
		<link>http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20332</link>
		<dc:creator>C# by Contract - Using Expression Trees &#171; The Wandering Glitch 2</dc:creator>
		<pubDate>Fri, 18 Jan 2008 06:00:55 +0000</pubDate>
		<guid isPermaLink="false">http://aabs.wordpress.com/2008/01/16/complex-assertions-using-c-30/#comment-20332</guid>
		<description>[...] on 18/01/2008. Last time I created a simple, but powerful, little design by contract library in C# 3.0. It took hardly any [...]</description>
		<content:encoded><![CDATA[<p>[...] on 18/01/2008. Last time I created a simple, but powerful, little design by contract library in C# 3.0. It took hardly any [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
