<?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"
	>
<channel>
	<title>Comments on: Some final Patterns</title>
	<atom:link href="http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/</link>
	<description>Robert Fischer and Brian Hurt on Punditry, Programming Languages, and Other Religious Issues</description>
	<pubDate>Thu, 20 Nov 2008 16:32:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: Enfranchised Mind &#187; Functional (Meta)?Programming Stunts for Ruby and Groovy (and a Little Perl)</title>
		<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-33406</link>
		<dc:creator>Enfranchised Mind &#187; Functional (Meta)?Programming Stunts for Ruby and Groovy (and a Little Perl)</dc:creator>
		<pubDate>Tue, 24 Jun 2008 18:13:00 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-33406</guid>
		<description>[...] final everywhere &#8212; see Yet Another Reason final Is Your Friend. A ubiquitous use of final actually gave some nice patterns (in the &#8220;macro&#8221; sense of patterns), but raised all kinds of eyebrows and made my code [...]</description>
		<content:encoded><![CDATA[<p>[...] final everywhere &#8212; see Yet Another Reason final Is Your Friend. A ubiquitous use of final actually gave some nice patterns (in the &#8220;macro&#8221; sense of patterns), but raised all kinds of eyebrows and made my code [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; 2008 &#187; April &#187; 14</title>
		<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-33000</link>
		<dc:creator>Enfranchised Mind &#187; 2008 &#187; April &#187; 14</dc:creator>
		<pubDate>Mon, 14 Apr 2008 13:53:29 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-33000</guid>
		<description>[...] the blog posting...Installing RMagick on Ubuntu: Problems I Encountered Doing "gem install RMagick"Some final PatternsStrongly Typed Languages Considered DangerousDefinitions of FreedomAnother Mason for Ron PaulMy [...]</description>
		<content:encoded><![CDATA[<p>[...] the blog posting&#8230;Installing RMagick on Ubuntu: Problems I Encountered Doing &#8220;gem install RMagick&#8221;Some final PatternsStrongly Typed Languages Considered DangerousDefinitions of FreedomAnother Mason for Ron PaulMy [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32978</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Tue, 08 Apr 2008 12:54:10 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32978</guid>
		<description>Yeah, now if some clever person would just come up with &lt;a href="http://code.google.com/p/jconch/wiki/CacheMapExamples" rel="nofollow"&gt;a clever way of creating and caching immutable objects in a thread safe way&lt;/a&gt;, we'd be set!</description>
		<content:encoded><![CDATA[<p>Yeah, now if some clever person would just come up with <a href="http://code.google.com/p/jconch/wiki/CacheMapExamples" rel="nofollow">a clever way of creating and caching immutable objects in a thread safe way</a>, we&#8217;d be set!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hamlet D'Arcy</title>
		<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32970</link>
		<dc:creator>Hamlet D'Arcy</dc:creator>
		<pubDate>Tue, 08 Apr 2008 00:49:33 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32970</guid>
		<description>The last example about synchronizing on a non-final field isn't really contrived at all... There is no guarantee that all threads will see changes to non-final fields. So if thread A creates an object and sets the non-final field to a value in the constructor, there is no guarantee that thread B will see that value. It very well might do a read on the value and receive null. This happened to me last Fall and was quite reproducible (in that it happened maybe 1 in 10 times). 

Also, I learned two weeks ago how nice immutable objects are when it comes time to optimize your Java code for performance. It opens up a lot of caching possibilities when you don't have to worry about someone changing the state of your shared object.</description>
		<content:encoded><![CDATA[<p>The last example about synchronizing on a non-final field isn&#8217;t really contrived at all&#8230; There is no guarantee that all threads will see changes to non-final fields. So if thread A creates an object and sets the non-final field to a value in the constructor, there is no guarantee that thread B will see that value. It very well might do a read on the value and receive null. This happened to me last Fall and was quite reproducible (in that it happened maybe 1 in 10 times). </p>
<p>Also, I learned two weeks ago how nice immutable objects are when it comes time to optimize your Java code for performance. It opens up a lot of caching possibilities when you don&#8217;t have to worry about someone changing the state of your shared object.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Fischer</title>
		<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32969</link>
		<dc:creator>Robert Fischer</dc:creator>
		<pubDate>Mon, 07 Apr 2008 21:50:51 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32969</guid>
		<description>I'm actually a fan of functional programming and immutable objects.  However, in an OO world, the data within an object might change out from under you, and that's just the reality.

However, you can at least keep your maintainers from being surprised when the parameter variable isn't the thing that was passed into the method.  This is doubly important if you have certain checks (&lt;code&gt;null&lt;/code&gt; being a popular one) that you're assuming for passing in.</description>
		<content:encoded><![CDATA[<p>I&#8217;m actually a fan of functional programming and immutable objects.  However, in an OO world, the data within an object might change out from under you, and that&#8217;s just the reality.</p>
<p>However, you can at least keep your maintainers from being surprised when the parameter variable isn&#8217;t the thing that was passed into the method.  This is doubly important if you have certain checks (<code>null</code> being a popular one) that you&#8217;re assuming for passing in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Raoul Duke</title>
		<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32968</link>
		<dc:creator>Raoul Duke</dc:creator>
		<pubDate>Mon, 07 Apr 2008 21:38:58 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32968</guid>
		<description>Much appreciated food for thought. A niggling detail is that just because your parameters are final doesn't mean they cannot be changed; we're dealing with objects after all. So really if one is serious about being anal (!) then one needs to start out with immutable objects...</description>
		<content:encoded><![CDATA[<p>Much appreciated food for thought. A niggling detail is that just because your parameters are final doesn&#8217;t mean they cannot be changed; we&#8217;re dealing with objects after all. So really if one is serious about being anal (!) then one needs to start out with immutable objects&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enfranchised Mind &#187; Updated &#8220;Some Final Patterns&#8221;</title>
		<link>http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32960</link>
		<dc:creator>Enfranchised Mind &#187; Updated &#8220;Some Final Patterns&#8221;</dc:creator>
		<pubDate>Mon, 07 Apr 2008 13:29:11 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/2007/12/16/some-final-patterns/#comment-32960</guid>
		<description>[...] Go back and take a look if you&#8217;re interested in Java development. Hat-tip to Hamlet d&#8217;Arcy&#8217;s &#8220;10 Best IDEA Inspections You&#8217;re Not Using&#8221; post for bringing yet another reason to use final to my attention. [...]</description>
		<content:encoded><![CDATA[<p>[...] Go back and take a look if you&#8217;re interested in Java development. Hat-tip to Hamlet d&#8217;Arcy&#8217;s &#8220;10 Best IDEA Inspections You&#8217;re Not Using&#8221; post for bringing yet another reason to use final to my attention. [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
