8:30 AM C# Ninjitsu
by Chris EargleC# has humble beginnings as an object oriented language of the purest kind. It was class-based, it was imperative, and it was component-oriented. For many years, the classic object-oriented design principles served class library designers well, and the programming world rejoiced.
Chaos began creeping its way into the world of C#. They were minor things at first: a generic list here, a nullable type there. Developers used these elements to enhance their work. But those that understood utilized them to varying degrees. Some applied the new techniques with wanton abandon. Some kept the old traditions in mind.
Then the dark specter of functional programming infiltrated the language. For those that were doomed to a life of incoherent language usage, there was no hope. But those that held onto the old traditions managed to get by.
There is another way. C# is no longer a purely object-oriented language. It is no longer just an imperative, class-based, component oriented discipline. It is also a generic, declarative, functional discipline.
I will reexamine the object-oriented principles and introduce new principles. I will then introduce new refactorings as we move toward a more declarative, fluent world.
