<?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: Code Review Quiz</title>
	<atom:link href="http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/</link>
	<description>Software development, testing, and techie life</description>
	<lastBuildDate>Thu, 08 Mar 2012 22:19:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
	<item>
		<title>By: Ryan means</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1362</link>
		<dc:creator>Ryan means</dc:creator>
		<pubDate>Wed, 20 Jul 2011 20:32:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1362</guid>
		<description>Hello Chad,
I&#039;m writing in the efforts of tring to find asp.net, c#, WPF deverloper for a client of mine in Austin. I&#039;m here in Houston and normaly work on jobs in town. 
If you or anyone you know may be looking please let me know.
Thanks,
Ryan Means
rmeans@vantageforce.com</description>
		<content:encoded><![CDATA[<p>Hello Chad,<br />
I&#8217;m writing in the efforts of tring to find asp.net, c#, WPF deverloper for a client of mine in Austin. I&#8217;m here in Houston and normaly work on jobs in town.<br />
If you or anyone you know may be looking please let me know.<br />
Thanks,<br />
Ryan Means<br />
<a href="mailto:rmeans@vantageforce.com">rmeans@vantageforce.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rich</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1360</link>
		<dc:creator>Rich</dc:creator>
		<pubDate>Mon, 11 Jul 2011 21:09:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1360</guid>
		<description>The domain being modelled here seems very odd to me. I cannot think what business scenario would bank accounts, tranfers, products and customer photos would all be first-class aggregate roots within a single bounded context. It&#039;s either a domain I am unfamiliar with or (more likely, given the extremely vague name), a thinly-veiled 90&#039;s style DAL.</description>
		<content:encoded><![CDATA[<p>The domain being modelled here seems very odd to me. I cannot think what business scenario would bank accounts, tranfers, products and customer photos would all be first-class aggregate roots within a single bounded context. It&#8217;s either a domain I am unfamiliar with or (more likely, given the extremely vague name), a thinly-veiled 90&#8242;s style DAL.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Johanson</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1359</link>
		<dc:creator>Peter Johanson</dc:creator>
		<pubDate>Mon, 11 Jul 2011 19:09:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1359</guid>
		<description>Yeah, I was wondering the same thing about the OrderDetails and CustomerPictures, whether they were true ARs or not.</description>
		<content:encoded><![CDATA[<p>Yeah, I was wondering the same thing about the OrderDetails and CustomerPictures, whether they were true ARs or not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Craig Cavalier</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1358</link>
		<dc:creator>Craig Cavalier</dc:creator>
		<pubDate>Mon, 11 Jul 2011 19:05:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1358</guid>
		<description>Another issue with this interface is that it isn&#039;t at all intention revealing, which of course, interfaces should be.If I were to hazard a guess at the reason for being of this interface, I would suggest that it only exists as a product of the EF tool, rather than there being a need for it  (This suspicion was somewhat confirmed when I realized it was generated code).

Kinda seems silly now, picking apart the problems in generated code. Still a useful exercise in identifying code-smells mind you.</description>
		<content:encoded><![CDATA[<p>Another issue with this interface is that it isn&#8217;t at all intention revealing, which of course, interfaces should be.If I were to hazard a guess at the reason for being of this interface, I would suggest that it only exists as a product of the EF tool, rather than there being a need for it  (This suspicion was somewhat confirmed when I realized it was generated code).</p>
<p>Kinda seems silly now, picking apart the problems in generated code. Still a useful exercise in identifying code-smells mind you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Craig Cavalier</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1357</link>
		<dc:creator>Craig Cavalier</dc:creator>
		<pubDate>Mon, 11 Jul 2011 17:48:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1357</guid>
		<description>Interestingly enough, I managed to find
the IQueryableUnitOfWork interface - it was lerking in the namespace
Microsoft.Samples.NLayerApp.Infrastructure.Data.Core. Digging deeper still, implementers
of this interface also need to implement the underlying IUnitOfWork interface (which,
to my surprise is apparently part of the “core domain” - Microsoft.Samples.NLayerApp.Domain.Core)
and in turn,the ISQL interface (in the same namespace/project).

 

As you predicted, there’s a multitude of methods
here, including “commit”, “rollbackchanges”, “registerchanges”, “executequery”,
“executecommand”, and “createset”.

 

Let’s just say, I wouldn’t want to have to
implement this interface if I wasn’t using EF. To be honest, I wouldn’t
want to implement this interface regardless – we can do better. Of course, that
would make an interesting follow up post.</description>
		<content:encoded><![CDATA[<p>Interestingly enough, I managed to find<br />
the IQueryableUnitOfWork interface &#8211; it was lerking in the namespace<br />
Microsoft.Samples.NLayerApp.Infrastructure.Data.Core. Digging deeper still, implementers<br />
of this interface also need to implement the underlying IUnitOfWork interface (which,<br />
to my surprise is apparently part of the “core domain” &#8211; Microsoft.Samples.NLayerApp.Domain.Core)<br />
and in turn,the ISQL interface (in the same namespace/project).</p>
<p> </p>
<p>As you predicted, there’s a multitude of methods<br />
here, including “commit”, “rollbackchanges”, “registerchanges”, “executequery”,<br />
“executecommand”, and “createset”.</p>
<p> </p>
<p>Let’s just say, I wouldn’t want to have to<br />
implement this interface if I wasn’t using EF. To be honest, I wouldn’t<br />
want to implement this interface regardless – we can do better. Of course, that<br />
would make an interesting follow up post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1356</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Mon, 11 Jul 2011 17:38:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1356</guid>
		<description>I think the use of properties could also be an issue here. Or maybe not. I&#039;m expecting logic that can throw exceptions and have side effects by operating on those properties.

If I&#039;m honest, I&#039;d possibly do it the same way myself, though.

I think Ayende would disagree, and accept the use of IObjectContext. I could be wrong, but he doesn&#039;t like data access abstraction and I think in his post he condones this behaviour.

I was expecting someone to chime in and say those entities aren&#039;t aggregate roots, either. I would maybe expect order details to hang off orders, and customer pictures to hang off customers.

Please don&#039;t shout if I&#039;m wrong.</description>
		<content:encoded><![CDATA[<p>I think the use of properties could also be an issue here. Or maybe not. I&#8217;m expecting logic that can throw exceptions and have side effects by operating on those properties.</p>
<p>If I&#8217;m honest, I&#8217;d possibly do it the same way myself, though.</p>
<p>I think Ayende would disagree, and accept the use of IObjectContext. I could be wrong, but he doesn&#8217;t like data access abstraction and I think in his post he condones this behaviour.</p>
<p>I was expecting someone to chime in and say those entities aren&#8217;t aggregate roots, either. I would maybe expect order details to hang off orders, and customer pictures to hang off customers.</p>
<p>Please don&#8217;t shout if I&#8217;m wrong.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chad Myers</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1355</link>
		<dc:creator>Chad Myers</dc:creator>
		<pubDate>Mon, 11 Jul 2011 16:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1355</guid>
		<description>Good call on ISP. I had missed that one! 

1 Derives from a big base interface (I guess this is the ISP issue)2 Regions!3 Exposes EF IObjectSet instead of IQueryable or IList4 OCP violation (have to add to it every time you add to the app)5 SRP violation (too much going on)
6 This interface, at least, is not a &quot;unit of work&quot; in the common definition of the pattern</description>
		<content:encoded><![CDATA[<p>Good call on ISP. I had missed that one! </p>
<p>1 Derives from a big base interface (I guess this is the ISP issue)2 Regions!3 Exposes EF IObjectSet instead of IQueryable or IList4 OCP violation (have to add to it every time you add to the app)5 SRP violation (too much going on)<br />
6 This interface, at least, is not a &#8220;unit of work&#8221; in the common definition of the pattern</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Peter Johanson</title>
		<link>http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1354</link>
		<dc:creator>Peter Johanson</dc:creator>
		<pubDate>Mon, 11 Jul 2011 15:47:00 +0000</pubDate>
		<guid isPermaLink="false">http://lostechies.com/chadmyers/2011/07/11/code-review-quiz/#comment-1354</guid>
		<description>The three major ones I spot right off the bat:

1) Violation of SRP.
2) Violation of ISP.
3) Returns the IObjectSet type everywhere, which leaks the details of EF into this &quot;abstraction&quot;. 

Beyond that, this just &quot;feels wrong&quot; to me. Curious what specific issues others find that might help me understand the specifics of that &quot;wrong feeling&quot;.</description>
		<content:encoded><![CDATA[<p>The three major ones I spot right off the bat:</p>
<p>1) Violation of SRP.<br />
2) Violation of ISP.<br />
3) Returns the IObjectSet type everywhere, which leaks the details of EF into this &#8220;abstraction&#8221;. </p>
<p>Beyond that, this just &#8220;feels wrong&#8221; to me. Curious what specific issues others find that might help me understand the specifics of that &#8220;wrong feeling&#8221;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
