﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Lou commented on Why I hate internals, yet again</title><description>Before complaining too much about the number of internals I'd need to see the churn rate they've been through from bits to bits.
  
  
If they're being re-factored like mad for performance or if they're changing args to accommodate new functionality then I say more power too em. To the outside world an internal can be irritating, but from the development teams' point of view anything public is either a etched in stone or a breaking change waiting to happen.
  
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment13</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment13</guid><pubDate>Thu, 20 Mar 2008 09:00:48 GMT</pubDate></item><item><title>C-J Berg commented on Why I hate internals, yet again</title><description>The alternative being "making all internal classes public". Doing so would require huge investments in more thorough design and code reviews, and producing documentation (in several languages), and what not. It would be really expensive, and it would take a lot of time (and I guess time is the most limiting factor in Microsoft's case).
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment12</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment12</guid><pubDate>Thu, 13 Mar 2008 00:31:15 GMT</pubDate></item><item><title>Mats Helander commented on Why I hate internals, yet again</title><description>C-J,
  
  
"Sure, some grumpy old fogies will complain about it, but it’s nothing compared to the alternative."
  
  
Which alternative? Just making the classes public or also actually making the classes _fit_ to be public?
  
  
/Mats
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment11</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment11</guid><pubDate>Wed, 12 Mar 2008 20:35:52 GMT</pubDate></item><item><title>C-J Berg commented on Why I hate internals, yet again</title><description>I would argue that it isn't "in the BCL", but part of private implementation details. MS provides and supports an implementation of the BCL. MS has committed to it, and built an organization it knows can and will support it to great lengths. That’s one of the top reasons companies invest heavily in MS technologies.
  
  
If MS was to open up access to these implementation details, they would also have to be supported, and it would make change management much more difficult. You could argue against it, and say “no, MS could declare these classes ‘internal and volatile’, and people would know they might need to change code using it during upgrades". In reality, though, that would never work.
  
  
Developers and many of those highly skilled architects would start using these classes everywhere in their code. Every time an upgrade then breaks some application, perhaps in a subtle way (such as changing the underlying algorithm), MS would face a high risk of getting blamed. Perhaps not blamed openly in the media, but often internally by irresponsible developers. “Management: Why did the app break? Developer: Microsoft’s platform is hopelessly bug-ridden, it always breaks our app.”
  
  
I think MS is much better off keeping those classes internal. Sure, some grumpy old fogies will complain about it, but it’s nothing compared to the alternative.
  
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment10</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment10</guid><pubDate>Mon, 10 Mar 2008 22:15:36 GMT</pubDate></item><item><title>Joe M commented on Why I hate internals, yet again</title><description>I'm finding "internal" to be very useful with regards to my data provider.  I can expose only what I want to the public and still have everything else available to the rest in the assembly.
  
  
That said, I agree that having most of the BCL "internal" (and sealed!) makes life somewhat difficult.
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment9</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment9</guid><pubDate>Mon, 10 Mar 2008 19:46:35 GMT</pubDate></item><item><title>Alex G commented on Why I hate internals, yet again</title><description>It's my belief that "internal" keyword should be removed from the .net spec. The only time and reason when one would use it is when unable to properly design your classes... and seeing how much it's abused in the BCL, it's pretty daunting... 
  
  
Internal also means no need to write documentation.
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment7</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment7</guid><pubDate>Mon, 10 Mar 2008 18:56:37 GMT</pubDate></item><item><title>Alex G commented on Why I hate internals, yet again</title><description>It's my belief that "internal" keyword should be removed from the .net spec. The only time and reason when one would use it is when unable to properly design your classes... and seeing how much it's abused in the BCL, it's pretty daunting... 
  
  
Internal also means no need to write documentation.
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment8</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment8</guid><pubDate>Mon, 10 Mar 2008 18:56:37 GMT</pubDate></item><item><title>Keith Elder commented on Why I hate internals, yet again</title><description>What's up Ayende.
  
  
This is just a "hunch" but I bet the reason these were just copied from one to the other is there were different teams writing the two different namespaces.  And then getting this into the correct namespace  would involve another team.  In the end, it was easier to copy.  It is probably a case of:
  
  
 "It is easier to leave the Silo up than make the concerted effort to tear it down." 
  
  
I also encourage others to let this stuff be known.  The MVP Summit is right around the corner and there will be a lot of us that will have direct access to the product teams to discuss these very issues and provide this feedback.
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment6</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment6</guid><pubDate>Sun, 09 Mar 2008 13:33:40 GMT</pubDate></item><item><title>cristian commented on Why I hate internals, yet again</title><description>it seems the intenals most of the time indicate something they didn't have time to make good enough for the public but still needed to use. it either have implications or has an api that is likely to change
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment5</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment5</guid><pubDate>Sun, 09 Mar 2008 10:28:39 GMT</pubDate></item><item><title>Ayende Rahien commented on Why I hate internals, yet again</title><description>I am going to post each and every internal class that I encounter that I want to use.
  
Feel free to do the same, in fact, please do the same, I want to get the pain across to the people who write the framework.
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment4</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment4</guid><pubDate>Sun, 09 Mar 2008 04:40:07 GMT</pubDate></item><item><title>Chad Myers commented on Why I hate internals, yet again</title><description>Ooooh... are we going to start listing all the sins in the BCL? I could probably dump a dozen or so crimes off the top of my head :)  This could be a new meme
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment3</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment3</guid><pubDate>Sun, 09 Mar 2008 04:04:57 GMT</pubDate></item><item><title>Rob commented on Why I hate internals, yet again</title><description>If you're looking for a good implementation.  Here's where I got the code I am using in Caliburn:
  
  
http://blogs.msdn.com/nicholg/archive/2006/06/04/617466.aspx
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment2</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment2</guid><pubDate>Sun, 09 Mar 2008 03:17:43 GMT</pubDate></item><item><title>Grimace of Despair commented on Why I hate internals, yet again</title><description>These are probably just development guidelines:
  
1. Refactoring is only permitted from 3 occurrences of the same code
  
2. What happens in the BCL, stays in the BCL
</description><link>http://ayende.com/3186/why-i-hate-internals-yet-again#comment1</link><guid>http://ayende.com/3186/why-i-hate-internals-yet-again#comment1</guid><pubDate>Sun, 09 Mar 2008 02:33:31 GMT</pubDate></item></channel></rss>