Under the hood and working with .Net, TDD, Software Design, and Agile Stuff
I'm somewhat of the opinion that static typed languages are closing in on being an evolutionary dead end, but let's just say that C# is still important for the foreseeable future. That being said, what do you want for C# vNext? If we have to be constrained by static typing, I vote for making C# more like Objective C (not that I've ever coded in Obj C, just that it seems to have the things I want.). My little list in order (not that I expect much of it to happen) is this:
- Mixin's. I found myself really wanting this for a framework I have in my current project. Extension methods are okay, but I'd rather make it all the way to Mixin's. Obj C can do it as a static typed language so it's definitely possible. Heck, you can kind of do it in JavaScript.
- Symbols. Reflection based solutions could be so much easier with Symbols. I'd love to have compiler safe equivalents to Ruby Symbols.
- Make hashes a language feature. I keep bumping into frameworks that really want to pass around hashtables. If you absolutely have to do that, I wanna do var hash = :key => "red", :key2 => "green" in one line of code. Somebody recently commented that object initializers might be a decent compromise.
- Automatic delegation ala Ruby or Objective C.
- Metaprogramming! Method Missing magic! I'm not holding my breathe on this one because it sounds like a bridge too far for me. Give me metaprogramming and mixins and I think we can do AOP like things with less effort.
- Everything is virtual by default to make mocking easier
Anyway, what's your wish list?
About Jeremy D. Miller
Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy previously worked as a systems architect building mission critical supply chain software for a Fortune 100 company and learned agile development practices as a .Net consultant at ThoughtWorks, one of the pioneers of agile development. Jeremy is the author of the open source StructureMap (http://structuremap.sourceforge.net) tool for Dependency Injection with .Net and the forthcoming StoryTeller (http://storyteller.tigris.org) tool for supercharged FIT testing in .Net. Jeremy's thoughts on just about everything software related can be found on his weblog "The Shade Tree Developer" at http://codebetter.com/blogs/jeremy.miller, part of the popular CodeBetter site. Jeremy is a Microsoft MVP for C#.