<?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: How Many Licks?</title>
	<link>http://laribee.com/blog/2007/08/07/how-many-licks/</link>
	<description>a yeah yeah, i push models like weight</description>
	<pubDate>Fri, 25 Jul 2008 00:52:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: Dave</title>
		<link>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25959</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Thu, 09 Aug 2007 16:44:18 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25959</guid>
		<description>@Javier - I don't know about like always. I really like the stuff you're doing w/ IronRuby. I agree developers, as a species, get enamored with the single right way. I try to keep it simple but I do find that having a few, well-placed constraints helps to move things along.</description>
		<content:encoded><![CDATA[<p>@Javier - I don&#8217;t know about like always. I really like the stuff you&#8217;re doing w/ IronRuby. I agree developers, as a species, get enamored with the single right way. I try to keep it simple but I do find that having a few, well-placed constraints helps to move things along.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Javier Lozano</title>
		<link>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25597</link>
		<dc:creator>Javier Lozano</dc:creator>
		<pubDate>Wed, 08 Aug 2007 13:43:18 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25597</guid>
		<description>Great, post dude!  I particularly like the reference to the Toosie pop.  I was thinking of naming my blog post, "how many licks does it take to get to the center of an app?"  ... however, like always you did a better job!
...

It reminds me of the conversation you and and I had on the way to the MS campus back in March.  One point that really sticks out for me is this:

"All of these items are required to represent the real-world customer given my architecture."

To me this is huge!  It's context, context, context!  Sometimes I think we get too involved in the "right &#38; wrong" arguments of development and stop focusing on the core of application (what does it need to do and for who?).

We all just need to remember that OO at its core is the passing of messages to objects (yes, objects not classes) and that's it.  The fact that you have encapsulation, inheritance, blah, blah...that's just icing on the cake.</description>
		<content:encoded><![CDATA[<p>Great, post dude!  I particularly like the reference to the Toosie pop.  I was thinking of naming my blog post, &#8220;how many licks does it take to get to the center of an app?&#8221;  &#8230; however, like always you did a better job!<br />
&#8230;</p>
<p>It reminds me of the conversation you and and I had on the way to the MS campus back in March.  One point that really sticks out for me is this:</p>
<p>&#8220;All of these items are required to represent the real-world customer given my architecture.&#8221;</p>
<p>To me this is huge!  It&#8217;s context, context, context!  Sometimes I think we get too involved in the &#8220;right &amp; wrong&#8221; arguments of development and stop focusing on the core of application (what does it need to do and for who?).</p>
<p>We all just need to remember that OO at its core is the passing of messages to objects (yes, objects not classes) and that&#8217;s it.  The fact that you have encapsulation, inheritance, blah, blah&#8230;that&#8217;s just icing on the cake.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25420</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Wed, 08 Aug 2007 02:17:10 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25420</guid>
		<description>True re: class explosion. Role interfaces, to me, are the next step in OO evolution.

I generally don't use standalone factory classes. Instead, I like a mix-up of the old skool GoF builder pattern but external. I've called them in the past a build-to-order specification, but I think it's really a GoF builder. I'll feed a builder into a Factory Method living on a repository. I try to keep aggregate roots in control of creating it's entities in a Demeter-safe (which I wholeheartedly believe in as a core design tenant (excepting method chains)) fashion.

You can have one or more Builders that deal with the invariants and at that point you can persist the class. I like Jimmy Nilsson's idea of a least-restrictive sense of persistance. That is, I think it's cool to go ahead and persist entities that are broken. I'll just persist the reasons they are broken. 

Yes, no, maybe, ha ha?</description>
		<content:encoded><![CDATA[<p>True re: class explosion. Role interfaces, to me, are the next step in OO evolution.</p>
<p>I generally don&#8217;t use standalone factory classes. Instead, I like a mix-up of the old skool GoF builder pattern but external. I&#8217;ve called them in the past a build-to-order specification, but I think it&#8217;s really a GoF builder. I&#8217;ll feed a builder into a Factory Method living on a repository. I try to keep aggregate roots in control of creating it&#8217;s entities in a Demeter-safe (which I wholeheartedly believe in as a core design tenant (excepting method chains)) fashion.</p>
<p>You can have one or more Builders that deal with the invariants and at that point you can persist the class. I like Jimmy Nilsson&#8217;s idea of a least-restrictive sense of persistance. That is, I think it&#8217;s cool to go ahead and persist entities that are broken. I&#8217;ll just persist the reasons they are broken. </p>
<p>Yes, no, maybe, ha ha?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Evan</title>
		<link>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25391</link>
		<dc:creator>Evan</dc:creator>
		<pubDate>Wed, 08 Aug 2007 00:23:07 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25391</guid>
		<description>Developers moving from Structured Procedural code to Object-Oriented code often notice the resulting "class explosion."  Generally speaking, it's a sign you are learning better habits.  Class Explosion can also be a smell, but when you are first switching, you should see a huge bump in the number of classes you create.  You can learn the smell later.

Anyone care to weigh in on Factories from DDD?  Where does your Customer start its life (ie..before it was persisted the first time)?</description>
		<content:encoded><![CDATA[<p>Developers moving from Structured Procedural code to Object-Oriented code often notice the resulting &#8220;class explosion.&#8221;  Generally speaking, it&#8217;s a sign you are learning better habits.  Class Explosion can also be a smell, but when you are first switching, you should see a huge bump in the number of classes you create.  You can learn the smell later.</p>
<p>Anyone care to weigh in on Factories from DDD?  Where does your Customer start its life (ie..before it was persisted the first time)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25319</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Tue, 07 Aug 2007 19:45:10 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25319</guid>
		<description>I like your answers. They're far more direct! :)

I'm coming to think of DTOs as pretty much messages. I'm just reading Gregor Hohpe and Bobby Wolfe magnum opus on Enterprise Integration Patterns and digging back through Udi's blog. Recently I've been mostly in application stacks so I try to keep it simple. Still, I'm a big fan of a "service membrane." I find by making it part of the default architecture, seperating out contracts (interfaces and DTOs) into a module that clients (UI, integration services) take dependency on _greatly_ contributes to partitioning and maintainability.

Even w/ the slice approach it's not too thin a slice. Sometimes you find occasion to use make two DTOs fill in for one purpose. I think (keyword) that I'll probably come around to the idea of each operation having a _distinct message_ (request, response, both, none) and DTOs are more the elements used to compose these message. So like in XSD parlance DTO as complex type. Message as root element.</description>
		<content:encoded><![CDATA[<p>I like your answers. They&#8217;re far more direct! :)</p>
<p>I&#8217;m coming to think of DTOs as pretty much messages. I&#8217;m just reading Gregor Hohpe and Bobby Wolfe magnum opus on Enterprise Integration Patterns and digging back through Udi&#8217;s blog. Recently I&#8217;ve been mostly in application stacks so I try to keep it simple. Still, I&#8217;m a big fan of a &#8220;service membrane.&#8221; I find by making it part of the default architecture, seperating out contracts (interfaces and DTOs) into a module that clients (UI, integration services) take dependency on _greatly_ contributes to partitioning and maintainability.</p>
<p>Even w/ the slice approach it&#8217;s not too thin a slice. Sometimes you find occasion to use make two DTOs fill in for one purpose. I think (keyword) that I&#8217;ll probably come around to the idea of each operation having a _distinct message_ (request, response, both, none) and DTOs are more the elements used to compose these message. So like in XSD parlance DTO as complex type. Message as root element.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Scheirman</title>
		<link>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25316</link>
		<dc:creator>Ben Scheirman</dc:creator>
		<pubDate>Tue, 07 Aug 2007 19:20:35 +0000</pubDate>
		<guid>http://laribee.com/blog/2007/08/07/how-many-licks/#comment-25316</guid>
		<description>I think the question could be taken many ways:

How many classes does it take?

* ignoring proper design principles... one!
* one might argue also.....  no more than is absolutely needed.  Resist the urge to put in tons of flexibility where it is not warranted
* and, like you say, to accurately represent a real-world object you'd need a plethora of classes that model even the tiniest behavior.

Interesting note on the sidebar... I like your take on just giving certain screens the "slice" of data that they need and nothing else.  That frees you to model your domain independently of the specific UIs as long as you keep up the translation.  I'm curious how you manage to have many different "flavors" of DTO, depending on the consumer...  perhaps another blog post?</description>
		<content:encoded><![CDATA[<p>I think the question could be taken many ways:</p>
<p>How many classes does it take?</p>
<p>* ignoring proper design principles&#8230; one!<br />
* one might argue also&#8230;..  no more than is absolutely needed.  Resist the urge to put in tons of flexibility where it is not warranted<br />
* and, like you say, to accurately represent a real-world object you&#8217;d need a plethora of classes that model even the tiniest behavior.</p>
<p>Interesting note on the sidebar&#8230; I like your take on just giving certain screens the &#8220;slice&#8221; of data that they need and nothing else.  That frees you to model your domain independently of the specific UIs as long as you keep up the translation.  I&#8217;m curious how you manage to have many different &#8220;flavors&#8221; of DTO, depending on the consumer&#8230;  perhaps another blog post?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
