<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Ordered Fluency</title>
	<link>http://laribee.com/blog/2007/07/12/ordered-fluency/</link>
	<description>a yeah yeah, i push models like weight</description>
	<pubDate>Thu, 21 Aug 2008 22:38:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: Dave</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41199</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Thu, 13 Sep 2007 19:56:49 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41199</guid>
		<description>Well, one reason to have both is to have the fluent interface serve as a means of building up an object in code but someday (danger!) you want to have a factory that builds up the same kinds of objects from data/metadata. 

Thanks for the link!</description>
		<content:encoded><![CDATA[<p>Well, one reason to have both is to have the fluent interface serve as a means of building up an object in code but someday (danger!) you want to have a factory that builds up the same kinds of objects from data/metadata. </p>
<p>Thanks for the link!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41157</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Thu, 13 Sep 2007 17:16:34 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41157</guid>
		<description>Jeez just re-read my last post, what I meant to say was:

Thanks for the response. 

Yeah I can see mocking (Rhino/TypeMock) and configuration as two great usages. 

On the domain side, like you say having both styles in the classes is trivial but the resulting interface seems to me to be a little messy. Having say that I don’t think having Expression Builders is perfect, though I guess it lets you choose to use fluent interfaces only where they are most useful.

If you are thinking of fluent querying then it might be worth considering this approach, which is at the very least interesting:
http://tech.groups.yahoo.com/group/domaindrivendesign/message/5101</description>
		<content:encoded><![CDATA[<p>Jeez just re-read my last post, what I meant to say was:</p>
<p>Thanks for the response. </p>
<p>Yeah I can see mocking (Rhino/TypeMock) and configuration as two great usages. </p>
<p>On the domain side, like you say having both styles in the classes is trivial but the resulting interface seems to me to be a little messy. Having say that I don’t think having Expression Builders is perfect, though I guess it lets you choose to use fluent interfaces only where they are most useful.</p>
<p>If you are thinking of fluent querying then it might be worth considering this approach, which is at the very least interesting:<br />
<a href="http://tech.groups.yahoo.com/group/domaindrivendesign/message/5101" rel="nofollow">http://tech.groups.yahoo.com/group/domaindrivendesign/message/5101</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41156</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Thu, 13 Sep 2007 17:14:07 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41156</guid>
		<description>Thanks for the response. 

Yeah I can see mocking (Rhino/TypeMock) and configuration as two great usages. Like you say having both is trivial but the resulting interface seems to me to be a little messy, with a mixture of two very different styles. However I don't think having Expression Builders is much better, though I guess it lets you choose to use fluent interfaces only where they are most useful?

If your thinking of fluent querying then it might be worth considering this approach, which is at the very least interesting:
http://tech.groups.yahoo.com/group/domaindrivendesign/message/5101</description>
		<content:encoded><![CDATA[<p>Thanks for the response. </p>
<p>Yeah I can see mocking (Rhino/TypeMock) and configuration as two great usages. Like you say having both is trivial but the resulting interface seems to me to be a little messy, with a mixture of two very different styles. However I don&#8217;t think having Expression Builders is much better, though I guess it lets you choose to use fluent interfaces only where they are most useful?</p>
<p>If your thinking of fluent querying then it might be worth considering this approach, which is at the very least interesting:<br />
<a href="http://tech.groups.yahoo.com/group/domaindrivendesign/message/5101" rel="nofollow">http://tech.groups.yahoo.com/group/domaindrivendesign/message/5101</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41060</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Thu, 13 Sep 2007 12:01:41 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-41060</guid>
		<description>@Colin - Not really. I've had some success with it in the presentation layer or for configuring infrastructure services or for, of course, mock object testing. It's a trivial matter to have an object with both a method chain and a "normal" API, but ordering your fluent interface can help you set the usage of your API along a dotted path. One use for fluent interface in the DM is a fluent query object, I've toyed around with this but at this point Specification is doing the trick for me.</description>
		<content:encoded><![CDATA[<p>@Colin - Not really. I&#8217;ve had some success with it in the presentation layer or for configuring infrastructure services or for, of course, mock object testing. It&#8217;s a trivial matter to have an object with both a method chain and a &#8220;normal&#8221; API, but ordering your fluent interface can help you set the usage of your API along a dotted path. One use for fluent interface in the DM is a fluent query object, I&#8217;ve toyed around with this but at this point Specification is doing the trick for me.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Jack</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-40594</link>
		<dc:creator>Colin Jack</dc:creator>
		<pubDate>Wed, 12 Sep 2007 19:49:18 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-40594</guid>
		<description>Interesting solution and a good example of how it can work.

Since you're a DDD guy I should say that I'm not completely sold on the worth of fluent interfaces in domain models, it just seems like a lot of effort and in many cases I think you'd still need both the fluent interface methods and the normal API. Anyway have you found them useful in the domain?</description>
		<content:encoded><![CDATA[<p>Interesting solution and a good example of how it can work.</p>
<p>Since you&#8217;re a DDD guy I should say that I&#8217;m not completely sold on the worth of fluent interfaces in domain models, it just seems like a lot of effort and in many cases I think you&#8217;d still need both the fluent interface methods and the normal API. Anyway have you found them useful in the domain?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kostantinos</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-36846</link>
		<dc:creator>Kostantinos</dc:creator>
		<pubDate>Fri, 07 Sep 2007 13:40:41 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-36846</guid>
		<description>Nice!</description>
		<content:encoded><![CDATA[<p>Nice!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jon Rowett&#8217;s Workblog &#187; Good post on ordered fluent interfaces</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-21605</link>
		<dc:creator>Jon Rowett&#8217;s Workblog &#187; Good post on ordered fluent interfaces</dc:creator>
		<pubDate>Thu, 19 Jul 2007 12:45:28 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-21605</guid>
		<description>[...] about constraining the order in which the vocabulary you create gets used. David Laribee&#8217;s Ordered Fluency post has a simple and elegant [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] about constraining the order in which the vocabulary you create gets used. David Laribee&#8217;s Ordered Fluency post has a simple and elegant [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Freeman</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-21538</link>
		<dc:creator>Steve Freeman</dc:creator>
		<pubDate>Thu, 19 Jul 2007 01:58:42 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-21538</guid>
		<description>You might want to take a look at our OOPSLA write-up of how the jMock interface evolved. 

http://www.mockobjects.com/files/evolving_an_edsl.ooplsa2006.pdf</description>
		<content:encoded><![CDATA[<p>You might want to take a look at our OOPSLA write-up of how the jMock interface evolved. </p>
<p><a href="http://www.mockobjects.com/files/evolving_an_edsl.ooplsa2006.pdf" rel="nofollow">http://www.mockobjects.com/files/evolving_an_edsl.ooplsa2006.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sadek drobi</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-20793</link>
		<dc:creator>sadek drobi</dc:creator>
		<pubDate>Sat, 14 Jul 2007 12:22:24 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-20793</guid>
		<description>Ok, actually what i suggested was about the last paragraph of your post. Because I use a lot this style of grammer in my instance factories. The problem is always the class explosion! Thats why I beleive that a Dsl doesnt fit so nicely as an internal language in a statically typed programming language.

I really prefer an external text, that is not constrained with the programming language's limitations [http://www.domainspecific.org/index.php?option=com_content&#38;task=view&#38;id=4&#38;Itemid=1]. By the end, DSL is also for Business ppl to understand and to write. It should be understandable and shared by both Developers and Business ppl.
Having said that, fluent API's are one step that can form a bridge to an external DSL. I like lambda expressions in C# [http://sadekdrobi.com/2007/02/25/obsev-implementing-domain-friendly-predicates-like-specifications-with-c-30-expression-trees-2]  because they are dynamic, and they can be reverse generated from an external DSL.
Sorry for flooding my comments with links , the subject is quite interesting for me :)</description>
		<content:encoded><![CDATA[<p>Ok, actually what i suggested was about the last paragraph of your post. Because I use a lot this style of grammer in my instance factories. The problem is always the class explosion! Thats why I beleive that a Dsl doesnt fit so nicely as an internal language in a statically typed programming language.</p>
<p>I really prefer an external text, that is not constrained with the programming language&#8217;s limitations [http://www.domainspecific.org/index.php?option=com_content&amp;task=view&amp;id=4&amp;Itemid=1]. By the end, DSL is also for Business ppl to understand and to write. It should be understandable and shared by both Developers and Business ppl.<br />
Having said that, fluent API&#8217;s are one step that can form a bridge to an external DSL. I like lambda expressions in C# [http://sadekdrobi.com/2007/02/25/obsev-implementing-domain-friendly-predicates-like-specifications-with-c-30-expression-trees-2]  because they are dynamic, and they can be reverse generated from an external DSL.<br />
Sorry for flooding my comments with links , the subject is quite interesting for me :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-20748</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Sat, 14 Jul 2007 02:01:28 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/07/12/ordered-fluency/#comment-20748</guid>
		<description>Sadek,

That's a sweet technique. I think we're talking about different kinds of sugar here though. I'm talking about controlling the assembly.of.an.ordered.grammer. Still - awesome point - extension methods open a lot of possibilities for maintainability, module composition, and separation of concerns. Personally I can't wait to extend my DDD-style Repositories and Specifications with AR style syntax:

Customer.Find(Customer.Where.IsActive)</description>
		<content:encoded><![CDATA[<p>Sadek,</p>
<p>That&#8217;s a sweet technique. I think we&#8217;re talking about different kinds of sugar here though. I&#8217;m talking about controlling the assembly.of.an.ordered.grammer. Still - awesome point - extension methods open a lot of possibilities for maintainability, module composition, and separation of concerns. Personally I can&#8217;t wait to extend my DDD-style Repositories and Specifications with AR style syntax:</p>
<p>Customer.Find(Customer.Where.IsActive)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
