Effective C#: 50 Specific Ways to Improve Your C#