<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	>
<channel>
	<title>Comments on: Some final Patterns</title>
	<atom:link href="http://enfranchisedmind.com/blog/posts/some-final-patterns/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/posts/some-final-patterns/</link>
	<description>programming, politics, &#38; other religious issues</description>
	<lastBuildDate>Mon, 15 Mar 2010 00:31:40 +0000</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Enfranchised Mind &#187; Functional (Meta)?Programming Stunts for Ruby and Groovy (and a Little Perl)</title>
		<link>http://enfranchisedmind.com/blog/posts/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/posts/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 &quot;gem install RMagick&quot;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/posts/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=&quot;http://code.google.com/p/jconch/wiki/CacheMapExamples&quot; rel=&quot;nofollow&quot;&gt;a clever way of creating and caching immutable objects in a thread safe way&lt;/a&gt;, we&#039;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/posts/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&#039;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&#039;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/posts/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&#039;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&#039;s just the reality.

However, you can at least keep your maintainers from being surprised when the parameter variable isn&#039;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&#039;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>
</channel>
</rss>
