<?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: It&#8217;s ok to wet yourself every once in awhile</title>
	<atom:link href="http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/feed/" rel="self" type="application/rss+xml" />
	<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/</link>
	<description>Can you dig it man?</description>
	<pubDate>Thu, 20 Nov 2008 11:09:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
		<item>
		<title>By: Ricky Clarkson</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-71585</link>
		<dc:creator>Ricky Clarkson</dc:creator>
		<pubDate>Sat, 19 Jul 2008 19:09:50 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-71585</guid>
		<description>I could probably come up with more accessible syntax than that, but I'd need to try it out on some non-geeks.  Sadly, my girlfriend already understands Scheme syntax (took about 2 minutes), so that's her out.  And most other people I know can already use Excel, so they could cope with the above syntax given an explanation.  Damn.</description>
		<content:encoded><![CDATA[<p>I could probably come up with more accessible syntax than that, but I&#8217;d need to try it out on some non-geeks.  Sadly, my girlfriend already understands Scheme syntax (took about 2 minutes), so that&#8217;s her out.  And most other people I know can already use Excel, so they could cope with the above syntax given an explanation.  Damn.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-71408</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Fri, 18 Jul 2008 20:01:42 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-71408</guid>
		<description>Ricky- your code: &lt;code&gt;customers filter (customer =&gt; customer.isVip &#038;&#038; customer.items.size == 3) all (customer =&gt; HashMap(100 -&gt; 15, 30 -&gt; 10).highestLessThan(customer.items.price) == customer.items.discount)&lt;/code&gt; is slick, baby; however, it isn't very friendly to non-geeks (which may or may not be a concern!!). Thanks for sharing!</description>
		<content:encoded><![CDATA[<p>Ricky- your code: <code>customers filter (customer => customer.isVip &#038;&#038; customer.items.size == 3) all (customer => HashMap(100 -> 15, 30 -> 10).highestLessThan(customer.items.price) == customer.items.discount)</code> is slick, baby; however, it isn&#8217;t very friendly to non-geeks (which may or may not be a concern!!). Thanks for sharing!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-71407</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Fri, 18 Jul 2008 19:59:38 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-71407</guid>
		<description>Rich- you know, you are on to something with a well named constant-- that is a feature that we've played with and it has come up before. Point well taken, friend!</description>
		<content:encoded><![CDATA[<p>Rich- you know, you are on to something with a well named constant&#8211; that is a feature that we&#8217;ve played with and it has come up before. Point well taken, friend!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-70600</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Mon, 14 Jul 2008 17:18:55 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-70600</guid>
		<description>Clint- Yeah, I think you are right-- tale is good. WET = Wholly express the tale is my bag, baby.</description>
		<content:encoded><![CDATA[<p>Clint- Yeah, I think you are right&#8211; tale is good. WET = Wholly express the tale is my bag, baby.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricky Clarkson</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68461</link>
		<dc:creator>Ricky Clarkson</dc:creator>
		<pubDate>Wed, 02 Jul 2008 22:04:53 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68461</guid>
		<description>I don't even know which language the above is written in, so please bear my made-up syntax:

{ given "a VIP customer"
  and "given they have at least 3 items"
  and "the 3 items total at least $x"
  x = 30 =&#62; scenario "VIP customer with 3 items, over $30 receiving 10% discount" { then "they should receive a 10% discount" }
  x = 100 =&#62; scenario "VIP customer with 3 items, over $100 receiving 15% discount" { then "they should receive a 10% discount" } }

I was really hoping you had a good use case for avoiding DRY - I've been wondering whether there are any.

Incidentally, I'd rather write the code this way:

customers filter (customer =&#62; customer.isVip &#38;&#38; customer.items.size == 3) all (customer =&#62; HashMap(100 -&#62; 15, 30 -&#62; 10).highestLessThan(customer.items.price) == customer.items.discount)</description>
		<content:encoded><![CDATA[<p>I don&#8217;t even know which language the above is written in, so please bear my made-up syntax:</p>
<p>{ given &#8220;a VIP customer&#8221;<br />
  and &#8220;given they have at least 3 items&#8221;<br />
  and &#8220;the 3 items total at least $x&#8221;<br />
  x = 30 =&gt; scenario &#8220;VIP customer with 3 items, over $30 receiving 10% discount&#8221; { then &#8220;they should receive a 10% discount&#8221; }<br />
  x = 100 =&gt; scenario &#8220;VIP customer with 3 items, over $100 receiving 15% discount&#8221; { then &#8220;they should receive a 10% discount&#8221; } }</p>
<p>I was really hoping you had a good use case for avoiding DRY - I&#8217;ve been wondering whether there are any.</p>
<p>Incidentally, I&#8217;d rather write the code this way:</p>
<p>customers filter (customer =&gt; customer.isVip &amp;&amp; customer.items.size == 3) all (customer =&gt; HashMap(100 -&gt; 15, 30 -&gt; 10).highestLessThan(customer.items.price) == customer.items.discount)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rich Sharpe</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68422</link>
		<dc:creator>Rich Sharpe</dc:creator>
		<pubDate>Wed, 02 Jul 2008 17:22:41 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68422</guid>
		<description>I can see how this &lt;i&gt;could&lt;/i&gt; be a benefit in easyB. - Anything that can eliminate ambiguity from the BA's writing easyB stories is a good thing.
However if one of your statements is wrong you still have to go and change all occurrences - are you going to find them all?

EasyB is terrifically easy to learn and it isn't difficult to teach someone about set-ups and tear downs.
Maybe an EasyB scenario 'constant' or 'set' could be created so a well named variable could be used rather than a set up so a customer/BA can  still understand and you don't abuse the DRY principle?</description>
		<content:encoded><![CDATA[<p>I can see how this <i>could</i> be a benefit in easyB. - Anything that can eliminate ambiguity from the BA&#8217;s writing easyB stories is a good thing.<br />
However if one of your statements is wrong you still have to go and change all occurrences - are you going to find them all?</p>
<p>EasyB is terrifically easy to learn and it isn&#8217;t difficult to teach someone about set-ups and tear downs.<br />
Maybe an EasyB scenario &#8216;constant&#8217; or &#8217;set&#8217; could be created so a well named variable could be used rather than a set up so a customer/BA can  still understand and you don&#8217;t abuse the DRY principle?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Clint Shank</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68418</link>
		<dc:creator>Clint Shank</dc:creator>
		<pubDate>Wed, 02 Jul 2008 15:53:21 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68418</guid>
		<description>I'm not sure I like the word "tactics".  It sounds like it may refer to implementation details.

How about WET = wholly express the tale?</description>
		<content:encoded><![CDATA[<p>I&#8217;m not sure I like the word &#8220;tactics&#8221;.  It sounds like it may refer to implementation details.</p>
<p>How about WET = wholly express the tale?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Philip Schwarz</title>
		<link>http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68403</link>
		<dc:creator>Philip Schwarz</dc:creator>
		<pubDate>Wed, 02 Jul 2008 12:44:12 +0000</pubDate>
		<guid isPermaLink="false">http://thediscoblog.com/2008/07/02/its-ok-to-wet-yourself-every-once-in-awhile/#comment-68403</guid>
		<description>Gerard Meszaros in &lt;a href="http://xunitpatterns.com/index.html" rel="nofollow"&gt;XUnit Test Patterns - Refactoring Test Code&lt;/a&gt;:

The DRY principle—"Don't repeat yourself"—of the Pragmatic Programmers (http://www.pragmaticprogrammer.com) should be applied to test code in the same way it is applied to production code. There is, however, a counterforce at play. Because the tests should Communicate Intent, it is best to keep the core test logic in each Test Method so it can be seen in one place. Nevertheless, this idea doesn't preclude moving a lot of supporting code into &lt;a href="http://xunitpatterns.com/Test%20Utility%20Method.html" rel="nofollow"&gt;Test Utility Methods&lt;/a&gt;, where it needs to be modified in only one place if it is affected by a change in the SUT.</description>
		<content:encoded><![CDATA[<p>Gerard Meszaros in <a href="http://xunitpatterns.com/index.html" rel="nofollow">XUnit Test Patterns - Refactoring Test Code</a>:</p>
<p>The DRY principle—&#8221;Don&#8217;t repeat yourself&#8221;—of the Pragmatic Programmers (http://www.pragmaticprogrammer.com) should be applied to test code in the same way it is applied to production code. There is, however, a counterforce at play. Because the tests should Communicate Intent, it is best to keep the core test logic in each Test Method so it can be seen in one place. Nevertheless, this idea doesn&#8217;t preclude moving a lot of supporting code into <a href="http://xunitpatterns.com/Test%20Utility%20Method.html" rel="nofollow">Test Utility Methods</a>, where it needs to be modified in only one place if it is affected by a change in the SUT.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
