<?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: Coding: Missing abstractions and LINQ</title>
	<atom:link href="http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/</link>
	<description>Thoughts on Software Development</description>
	<lastBuildDate>Sat, 31 Jul 2010 12:46:58 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Aaron Erickson</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30527</link>
		<dc:creator>Aaron Erickson</dc:creator>
		<pubDate>Tue, 19 Jan 2010 14:24:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30527</guid>
		<description>No idea - I don&#039;t write Ruby often :/

But inheriting your base from DynamicObject I can easily imagine how this will work.</description>
		<content:encoded><![CDATA[<p>No idea &#8211; I don't write Ruby often :/</p>
<p>But inheriting your base from DynamicObject I can easily imagine how this will work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Needham</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30497</link>
		<dc:creator>Mark Needham</dc:creator>
		<pubDate>Mon, 18 Jan 2010 22:58:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30497</guid>
		<description>@Aaron yeh that would work quite well in this situation as you say. How would this type of thing work in Ruby?</description>
		<content:encoded><![CDATA[<p>@Aaron yeh that would work quite well in this situation as you say. How would this type of thing work in Ruby?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jordan Terrell</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30475</link>
		<dc:creator>Jordan Terrell</dc:creator>
		<pubDate>Mon, 18 Jan 2010 15:58:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30475</guid>
		<description>And it did! DOH!  One more time, with HTML escape sequences ;-)

someFooHolder.Foos.Meets&lt;CompletedFooSpecification&gt;();</description>
		<content:encoded><![CDATA[<p>And it did! DOH!  One more time, with HTML escape sequences <img src='http://www.markhneedham.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>someFooHolder.Foos.Meets&lt;CompletedFooSpecification&gt;();</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Erickson</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30474</link>
		<dc:creator>Aaron Erickson</dc:creator>
		<pubDate>Mon, 18 Jan 2010 15:57:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30474</guid>
		<description>Maybe there is a good opportunity for Dynamic here :)

Something that converts the method name into the appropriate lambda dynamically... too magical?</description>
		<content:encoded><![CDATA[<p>Maybe there is a good opportunity for Dynamic here <img src='http://www.markhneedham.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Something that converts the method name into the appropriate lambda dynamically&#8230; too magical?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jordan Terrell</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30473</link>
		<dc:creator>Jordan Terrell</dc:creator>
		<pubDate>Mon, 18 Jan 2010 15:57:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30473</guid>
		<description>Looks like the commenting engine striped out some of my example.  This first example should be:

someFooHolder.Foos.Meets  ();

Hope this doesn&#039;t get striped out also!</description>
		<content:encoded><![CDATA[<p>Looks like the commenting engine striped out some of my example.  This first example should be:</p>
<p>someFooHolder.Foos.Meets  ();</p>
<p>Hope this doesn't get striped out also!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jordan Terrell</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30472</link>
		<dc:creator>Jordan Terrell</dc:creator>
		<pubDate>Mon, 18 Jan 2010 15:55:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30472</guid>
		<description>I agree with Jaco. When the LINQ expression is fairly simple and used frequently, then writing an extension method makes good sense.  However, when the expression is complicated or composed of multiple, perhaps reusable parts, I like the Specification pattern: http://martinfowler.com/apsupp/spec.pdf

For example:

someFooHolder.Foos.Meets();

or 

someFooHolder.Foos.Meets(new CompletedFooSpecification());

That may seem more involved - and it is. However, the specification pattern can give you (more) Separation of Concerns and composability, if you *need* it.  If not, then extension methods is an good choice.</description>
		<content:encoded><![CDATA[<p>I agree with Jaco. When the LINQ expression is fairly simple and used frequently, then writing an extension method makes good sense.  However, when the expression is complicated or composed of multiple, perhaps reusable parts, I like the Specification pattern: <a href="http://martinfowler.com/apsupp/spec.pdf" rel="nofollow">http://martinfowler.com/apsupp/spec.pdf</a></p>
<p>For example:</p>
<p>someFooHolder.Foos.Meets();</p>
<p>or </p>
<p>someFooHolder.Foos.Meets(new CompletedFooSpecification());</p>
<p>That may seem more involved &#8211; and it is. However, the specification pattern can give you (more) Separation of Concerns and composability, if you *need* it.  If not, then extension methods is an good choice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jaco Pretorius</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30456</link>
		<dc:creator>Jaco Pretorius</dc:creator>
		<pubDate>Mon, 18 Jan 2010 09:52:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30456</guid>
		<description>Interesting post - I agree that we tend to duplicate LINQ expressions quite often.  If I find I&#039;m re-using a LINQ expression I usually write a custom filter (extension method) and then simply re-use the extension method.  The cool part about this approach is that you can unit test the filter and your code also becomes much more readable.

For example, you might write

users.WithId(5) instead of users.Single(u =&gt; u.Id == 5)</description>
		<content:encoded><![CDATA[<p>Interesting post &#8211; I agree that we tend to duplicate LINQ expressions quite often.  If I find I'm re-using a LINQ expression I usually write a custom filter (extension method) and then simply re-use the extension method.  The cool part about this approach is that you can unit test the filter and your code also becomes much more readable.</p>
<p>For example, you might write</p>
<p>users.WithId(5) instead of users.Single(u =&gt; u.Id == 5)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: The Morning Brew - Chris Alcock &#187; The Morning Brew #519</title>
		<link>http://www.markhneedham.com/blog/2010/01/17/coding-missing-abstractions-and-linq/comment-page-1/#comment-30450</link>
		<dc:creator>The Morning Brew - Chris Alcock &#187; The Morning Brew #519</dc:creator>
		<pubDate>Mon, 18 Jan 2010 08:25:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=2059#comment-30450</guid>
		<description>[...] Coding: Missing abstractions and LINQ - Mark Needham looks at encapsulating the business logic that often leaks out with the power of Linq, capturing it inside classes rather than having Linq statements dotted around your code. [...]</description>
		<content:encoded><![CDATA[<p>[...] Coding: Missing abstractions and LINQ &#8211; Mark Needham looks at encapsulating the business logic that often leaks out with the power of Linq, capturing it inside classes rather than having Linq statements dotted around your code. [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
