<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Fluent Interfaces: What am I missing?</title>
	<atom:link href="http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fluent-interfaces-what-am-i-missing</link>
	<description></description>
	<lastBuildDate>Sun, 12 Feb 2012 18:54:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
	<item>
		<title>By: Jordan Terrell</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-2/#comment-44809</link>
		<dc:creator>Jordan Terrell</dc:creator>
		<pubDate>Sun, 22 Mar 2009 21:08:14 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44809</guid>
		<description>Check out the following to get rid of the &quot;standard object cruft like .ToString()&quot;:

http://www.clariusconsulting.net/blogs/kzu/archive/2008/03/10/58301.aspx</description>
		<content:encoded><![CDATA[<p>Check out the following to get rid of the &#8220;standard object cruft like .ToString()&#8221;:</p>
<p><a href="http://www.clariusconsulting.net/blogs/kzu/archive/2008/03/10/58301.aspx" rel="nofollow">http://www.clariusconsulting.net/blogs/kzu/archive/2008/03/10/58301.aspx</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Progressive Interfaces &#124; Elegant Code</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-2/#comment-44775</link>
		<dc:creator>Progressive Interfaces &#124; Elegant Code</dc:creator>
		<pubDate>Sat, 21 Mar 2009 23:52:18 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44775</guid>
		<description>[...] wrote this post about a month ago where he challenged the usefulness of fluent interfaces. One of his concerns is [...]</description>
		<content:encoded><![CDATA[<p>[...] wrote this post about a month ago where he challenged the usefulness of fluent interfaces. One of his concerns is [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian DeMarzo</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-2/#comment-44338</link>
		<dc:creator>Brian DeMarzo</dc:creator>
		<pubDate>Tue, 03 Mar 2009 14:10:17 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44338</guid>
		<description>I&#039;ve got to agree, most fluent interfaces don&#039;t feel terribly fluent to me, ESPECIALLY those which use simple English words as methods -- the Is() And() Not() Or(), as Steve Bohlen mentioned.

Consider two hypotheticals:

Assert.IsTrue(someVal, &quot;Should be true&quot;);

Assert.That(someVal).Is(true).Otherwise(&quot;Should be true&quot;);

When I read code, I want to read CODE, not English words with horrible character delimiting.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve got to agree, most fluent interfaces don&#8217;t feel terribly fluent to me, ESPECIALLY those which use simple English words as methods &#8212; the Is() And() Not() Or(), as Steve Bohlen mentioned.</p>
<p>Consider two hypotheticals:</p>
<p>Assert.IsTrue(someVal, &#8220;Should be true&#8221;);</p>
<p>Assert.That(someVal).Is(true).Otherwise(&#8220;Should be true&#8221;);</p>
<p>When I read code, I want to read CODE, not English words with horrible character delimiting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Sorensen</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-2/#comment-44327</link>
		<dc:creator>Bill Sorensen</dc:creator>
		<pubDate>Mon, 02 Mar 2009 18:53:25 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44327</guid>
		<description>Personally I find Moq ( http://code.google.com/p/moq/ ) much more intuitive than Rhino Mocks. Substituting lambdas for anonymous delegates might improve readability, too.</description>
		<content:encoded><![CDATA[<p>Personally I find Moq ( <a href="http://code.google.com/p/moq/" rel="nofollow">http://code.google.com/p/moq/</a> ) much more intuitive than Rhino Mocks. Substituting lambdas for anonymous delegates might improve readability, too.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dew Drop - February 23, 2009 &#124; Alvin Ashcraft's Morning Dew</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-2/#comment-44162</link>
		<dc:creator>Dew Drop - February 23, 2009 &#124; Alvin Ashcraft's Morning Dew</dc:creator>
		<pubDate>Mon, 23 Feb 2009 13:24:41 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44162</guid>
		<description>[...] Fluent Interfaces: What Am I Missing? (David Starr) [...]</description>
		<content:encoded><![CDATA[<p>[...] Fluent Interfaces: What Am I Missing? (David Starr) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sergio Pereira</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-1/#comment-44148</link>
		<dc:creator>Sergio Pereira</dc:creator>
		<pubDate>Sun, 22 Feb 2009 22:00:11 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44148</guid>
		<description>Nobody wanted to say this, but I will. Fluent Interfaces look goofy and stupid in C#. I&#039;m never confident where to find the building blocks of the API (are they methods of the returned objcet, are they arguments?). I keep saying that we will be embarrassed by the amount of energy we are putting in these monstrosities a few years from now. I also agree with everything Steve commented above.</description>
		<content:encoded><![CDATA[<p>Nobody wanted to say this, but I will. Fluent Interfaces look goofy and stupid in C#. I&#8217;m never confident where to find the building blocks of the API (are they methods of the returned objcet, are they arguments?). I keep saying that we will be embarrassed by the amount of energy we are putting in these monstrosities a few years from now. I also agree with everything Steve commented above.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-1/#comment-44129</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Fri, 20 Feb 2009 16:49:20 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44129</guid>
		<description>&quot;FluentNHibernate and the Windsor Registration syntax are arguably much better than their XML alternatives in many regards, but even if they had been coded in non-fluent-interface-style this same would be true of them IMHO&quot;

I agree, I also find discoverability to be a missing part of the puzzle. I haven&#039;t explored this space massively but I like fluent interfaces to be very discoverable, I want them to lead me in the right direction and I find most don&#039;t, they produce readable results but only but working out how to get the fluent interface to do what I want isn&#039;t any easier than with a normal interface in a lot of cases right now.</description>
		<content:encoded><![CDATA[<p>&#8220;FluentNHibernate and the Windsor Registration syntax are arguably much better than their XML alternatives in many regards, but even if they had been coded in non-fluent-interface-style this same would be true of them IMHO&#8221;</p>
<p>I agree, I also find discoverability to be a missing part of the puzzle. I haven&#8217;t explored this space massively but I like fluent interfaces to be very discoverable, I want them to lead me in the right direction and I find most don&#8217;t, they produce readable results but only but working out how to get the fluent interface to do what I want isn&#8217;t any easier than with a normal interface in a lot of cases right now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Bohlen</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-1/#comment-44127</link>
		<dc:creator>Steve Bohlen</dc:creator>
		<pubDate>Fri, 20 Feb 2009 11:53:29 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44127</guid>
		<description>I&#039;ve blogged about this in the past and got walloped over the head for it but I&#039;ll try one more time here: many of these interfaces are NOT fluent, they are LEGIBLE.

FLUENT implies that its easy to SAY something which (when intellisense is your only composition tool) is rarely the case with many of these.  I don&#039;t want to see verbs in my intellisense list, I want to see methods named something like the action I&#039;m trying to achieve in my code.  When I see .Is().Not()..... code, a little bit of the professional inside of me dies :)

It may very well be that once written these interfaces are indeed more LEGIBLE than otherwise, but calling them fluent as though they make it easier to SAY what you mean is a red-herring for all but the best of these approaches.  Things like FluentNHibernate and the Windsor Registration syntax are arguably much better than their XML alternatives in many regards, but even if they had been coded in non-fluent-interface-style this same would be true of them IMHO.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve blogged about this in the past and got walloped over the head for it but I&#8217;ll try one more time here: many of these interfaces are NOT fluent, they are LEGIBLE.</p>
<p>FLUENT implies that its easy to SAY something which (when intellisense is your only composition tool) is rarely the case with many of these.  I don&#8217;t want to see verbs in my intellisense list, I want to see methods named something like the action I&#8217;m trying to achieve in my code.  When I see .Is().Not()&#8230;.. code, a little bit of the professional inside of me dies <img src='http://elegantcode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>It may very well be that once written these interfaces are indeed more LEGIBLE than otherwise, but calling them fluent as though they make it easier to SAY what you mean is a red-herring for all but the best of these approaches.  Things like FluentNHibernate and the Windsor Registration syntax are arguably much better than their XML alternatives in many regards, but even if they had been coded in non-fluent-interface-style this same would be true of them IMHO.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam Tybor</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-1/#comment-44116</link>
		<dc:creator>Adam Tybor</dc:creator>
		<pubDate>Thu, 19 Feb 2009 15:49:06 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44116</guid>
		<description>Fluent interfaces can certainly be abused and overused as we are seeing that happen now.  The good news is fluent interfaces help us create systems based more on convention and readability which in the end will help with maintenance.

Fluent NHibernate and Windsor Registration are two that really come to mind.  No more xml hell and I can dot through the configuration with intellisense and the code becomes intention revealing.  Very nice!

As for the two examples above they are abusive, but thats still a good thing.  We need to test the limits before we know what works and what doesn&#039;t.</description>
		<content:encoded><![CDATA[<p>Fluent interfaces can certainly be abused and overused as we are seeing that happen now.  The good news is fluent interfaces help us create systems based more on convention and readability which in the end will help with maintenance.</p>
<p>Fluent NHibernate and Windsor Registration are two that really come to mind.  No more xml hell and I can dot through the configuration with intellisense and the code becomes intention revealing.  Very nice!</p>
<p>As for the two examples above they are abusive, but thats still a good thing.  We need to test the limits before we know what works and what doesn&#8217;t.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robin Robinson</title>
		<link>http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/comment-page-1/#comment-44114</link>
		<dc:creator>Robin Robinson</dc:creator>
		<pubDate>Thu, 19 Feb 2009 13:36:54 +0000</pubDate>
		<guid isPermaLink="false">http://elegantcode.com/2009/02/17/fluent-interfaces-what-am-i-missing/#comment-44114</guid>
		<description>@BrianGenisio

I would take it a step further and using something like this:

Assert.True(contidition.IsEqualTo(5))

I use these types of extensions in some of out internal framework code because:

if(result.IsEqualTo(expected))

looks better than

if(result == expected)</description>
		<content:encoded><![CDATA[<p>@BrianGenisio</p>
<p>I would take it a step further and using something like this:</p>
<p>Assert.True(contidition.IsEqualTo(5))</p>
<p>I use these types of extensions in some of out internal framework code because:</p>
<p>if(result.IsEqualTo(expected))</p>
<p>looks better than</p>
<p>if(result == expected)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

