Everything is about perception. When people look at Umbrella, they think it is huge; for us, it is simply a thin layer over the BCL and various MS technologies that improve the development experience.
Design principles for Umbrella are really simple:
- Eat our own dog food
- Umbrella has been developed using Umbrella.
- Don’t repeat yourself
- It’s really about addressing an issue once and only once.
- Stronger abstractions
- Coming up with the ISource<T> name for a generic getter-setter allows us to create higher abstraction.
- Fluent interface
- name.Validation().NotNull() as opposed to ArgumentHelper.CheckNotNull(name)
- Predictability
- The members are where they feel natural and discoverability is easy.
- Zero friction
- Supported by other principles, it is mainly focused as working effectively in a TDD environment, easily mockable, extensible, …
- Leverage and Reuse
- We use Action<T> and Func<T> as opposed to defining new delegates over and over again
In order to make this happen, we heavily rely on new C# 3.0 language features like lambda expressions and extension methods.
In order to showcase many of the functionalities we use on a daily basis, we’re launching a new serie of blog posts focused specifically at Umbrella. Stay tuned!
() => “Francois”