<?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: Extension methods illustrated</title>
	<atom:link href="http://damieng.com/blog/2007/10/20/extension-methods-illustrated/feed" rel="self" type="application/rss+xml" />
	<link>http://damieng.com/blog/2007/10/20/extension-methods-illustrated?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extension-methods-illustrated</link>
	<description>A .NET developer in silicon valley</description>
	<lastBuildDate>Fri, 18 May 2012 15:31:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Greg M</title>
		<link>http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-5069</link>
		<dc:creator>Greg M</dc:creator>
		<pubDate>Tue, 13 Nov 2007 06:41:47 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-5069</guid>
		<description>&lt;blockquote&gt;Where the hell did that method come from?&lt;/blockquote&gt;

How do you usually locate functions that aren&#039;t methods of a class? This is no different.

Of course the only reason for the o.f(x) syntax instead of f(o,x) is that it indicates that o is defined in-place in the definition of o&#039;s type, so once you break that, the need for that sugar becomes questionable. But I&#039;m pretty sure this feature isn&#039;t just sugar - can&#039;t you use it to make old classes implement new interfaces? That fixes a _whole_ bunch of the problems you get when you try to write modular, polymorphic code in an OO language.</description>
		<content:encoded><![CDATA[<blockquote><p>Where the hell did that method come from?</p></blockquote>
<p>How do you usually locate functions that aren&#8217;t methods of a class? This is no different.</p>
<p>Of course the only reason for the o.f(x) syntax instead of f(o,x) is that it indicates that o is defined in-place in the definition of o&#8217;s type, so once you break that, the need for that sugar becomes questionable. But I&#8217;m pretty sure this feature isn&#8217;t just sugar &#8211; can&#8217;t you use it to make old classes implement new interfaces? That fixes a _whole_ bunch of the problems you get when you try to write modular, polymorphic code in an OO language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Damien Guard</title>
		<link>http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-5070</link>
		<dc:creator>Damien Guard</dc:creator>
		<pubDate>Mon, 12 Nov 2007 23:28:09 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-5070</guid>
		<description>Yeah it&#039;s easy to find out where it came from with &quot;Go To Definition&quot;.

It really is just sugar, the .NET 2.0 runtime is unchanged for .NET 3.5 - it&#039;s just new frameworks and compiler magic.

You can&#039;t use it to make existing classes implement new interfaces, that would require runtime changes I&#039;m sure.

[)amien</description>
		<content:encoded><![CDATA[<p>Yeah it&#8217;s easy to find out where it came from with &#8220;Go To Definition&#8221;.</p>
<p>It really is just sugar, the .NET 2.0 runtime is unchanged for .NET 3.5 &#8211; it&#8217;s just new frameworks and compiler magic.</p>
<p>You can&#8217;t use it to make existing classes implement new interfaces, that would require runtime changes I&#8217;m sure.</p>
<p>[)amien</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kezzer</title>
		<link>http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4791</link>
		<dc:creator>Kezzer</dc:creator>
		<pubDate>Sat, 27 Oct 2007 12:50:39 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4791</guid>
		<description>This is actually something I had a discussion on in a Java group somewhere on the Internet.  Java 7 is in development and there&#039;s been some discussions for &quot;features&quot; such as this.  I had made a point that it&#039;s good to keep one concept straight and concise.  It&#039;s like arbitrarily introducing a new word into the English language.  People will say the word, no-one will know what it means, and they&#039;ve never had to know, suddenly they have to learn something new even though the old approach worked just fine.

There&#039;s a lot of short-hand stuff in C#.NET from what I remember though.  I do remember partial classes mainly when I was working at Symantec, they caused me some headaches ;)

I say stick to the traditional way, that way no-one will have to get confused :)</description>
		<content:encoded><![CDATA[<p>This is actually something I had a discussion on in a Java group somewhere on the Internet.  Java 7 is in development and there&#8217;s been some discussions for &#8220;features&#8221; such as this.  I had made a point that it&#8217;s good to keep one concept straight and concise.  It&#8217;s like arbitrarily introducing a new word into the English language.  People will say the word, no-one will know what it means, and they&#8217;ve never had to know, suddenly they have to learn something new even though the old approach worked just fine.</p>
<p>There&#8217;s a lot of short-hand stuff in C#.NET from what I remember though.  I do remember partial classes mainly when I was working at Symantec, they caused me some headaches ;)</p>
<p>I say stick to the traditional way, that way no-one will have to get confused :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: steve</title>
		<link>http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4760</link>
		<dc:creator>steve</dc:creator>
		<pubDate>Thu, 25 Oct 2007 21:36:36 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4760</guid>
		<description>I know. But as far as reading the code that&#039;s been written is concerned, it looks like a method of the class, but it isn&#039;t. Personally that would drive me nuts if I was reading someone elses code. Where the hell did that method come from? I can only imagine the crap that people will tack on to the standard String classes, and they&#039;ll all do it differently no doubt.

Personally I think this syntactic sugar stuff can be taken way too far. Sure it&#039;s clever little tricks that a low-level developer will love playing about with, but I seriously question whether it actually adds to the overall quality of the software, and perhaps the reverse. There&#039;s a lot to be said for elegance in simplicity and directness, not layering tricks upon tricks.</description>
		<content:encoded><![CDATA[<p>I know. But as far as reading the code that&#8217;s been written is concerned, it looks like a method of the class, but it isn&#8217;t. Personally that would drive me nuts if I was reading someone elses code. Where the hell did that method come from? I can only imagine the crap that people will tack on to the standard String classes, and they&#8217;ll all do it differently no doubt.</p>
<p>Personally I think this syntactic sugar stuff can be taken way too far. Sure it&#8217;s clever little tricks that a low-level developer will love playing about with, but I seriously question whether it actually adds to the overall quality of the software, and perhaps the reverse. There&#8217;s a lot to be said for elegance in simplicity and directness, not layering tricks upon tricks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Damien Guard</title>
		<link>http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4754</link>
		<dc:creator>Damien Guard</dc:creator>
		<pubDate>Thu, 25 Oct 2007 17:13:32 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4754</guid>
		<description>It doesn&#039;t let you tack on extra methods - it&#039;s just syntatic sugar for the compiler that calls the static method for you in a more human-readable way.

[)amien</description>
		<content:encoded><![CDATA[<p>It doesn&#8217;t let you tack on extra methods &#8211; it&#8217;s just syntatic sugar for the compiler that calls the static method for you in a more human-readable way.</p>
<p>[)amien</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: steve</title>
		<link>http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4686</link>
		<dc:creator>steve</dc:creator>
		<pubDate>Sat, 20 Oct 2007 12:36:07 +0000</pubDate>
		<guid isPermaLink="false">http://damieng.com/blog/2007/10/20/extension-methods-illustrated#comment-4686</guid>
		<description>Ugh, that&#039;s an ugly hack if ever I saw one, akin to how OO used to be emulated with procedural languages. 

As they add more and more &#039;magic&#039; features to .Net that bypass core limitations they&#039;ve built in, I wonder how hard it&#039;s going to be to pick apart a full-scale project after a couple of years development? I know it &#039;looks nice&#039; but to be honest being able to tack on extra methods to core classes willy-nilly without easily being able to tell what&#039;s the standard API and what&#039;s not horrifies me.</description>
		<content:encoded><![CDATA[<p>Ugh, that&#8217;s an ugly hack if ever I saw one, akin to how OO used to be emulated with procedural languages. </p>
<p>As they add more and more &#8216;magic&#8217; features to .Net that bypass core limitations they&#8217;ve built in, I wonder how hard it&#8217;s going to be to pick apart a full-scale project after a couple of years development? I know it &#8216;looks nice&#8217; but to be honest being able to tack on extra methods to core classes willy-nilly without easily being able to tell what&#8217;s the standard API and what&#8217;s not horrifies me.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

