"In other languages where objects can be swapped without Dependency Injection, there is no-one, calling these features - Bad Practice, just the opposite. They are called ‘Power features’, because that is what they are."
That is a great point. Just because ruby is the new Alt.Sweetheart, and you can hear talks about it all over, people don't refer to it as "too powerful" (as is SmallTalk, BTW).
I remember multiple threads in the alt.net mailing lists and from people like Jeremy and Oren (I might be wrong) saying how cool it would be to have mockability and testability as part of the .NET framework, where things could be easily replaced at whim. Wouldn't that be the same argument that it can hinder good design practices? Isn't there duplicity there?
more examples of products (in the alt.net mailing list) being tossed aside for not being "up to par" with the current design principles of people:
- Rocky Lhotka's CSLA Framework. A highly successfull and powerful framework used in many production apps and with "different" design features has been treated like it is the single greatest risk to humanity. no "it could be good if.." no "I agree that it serves a good purpose but..." . only bashing.
- Microsoft Unity is getting flanked as a container for having attributes. I personally found it much easier to start working with than the other leading containers. (People don't even like to TALK about spring BTW). But Castle ActiveRecord, which also uses attributes is regarded as "OK". LINQ to SQL? "Not OK" for having those attributes (and other reasons)
- The "Managed Extensibility framework" from microsoft is getting pooped on with most people openly admitting they haven't even looked at it personally. I can tell you it is innovative and solves a whole bunch of problems. But it is "no" by default - the exact opposite of what the community is about.