SOLID – Single Responsibility

Def. A class should have only a single responsibility. “S” in SOLID acronym stands for Single Responsibility Principle. The definition seems quite obvious, intuitive and simple. But it’s not. Let’s clarify it. In order to proceed, I will introduce 2 new terms: Business Responsibility is business requirement, functionality that describe public class’ interface. It usally comes from client’s […]

Continue reading


 Code Contracts & VS Extensibility

  Many times I’ve seen repetitive and obsessive validation of input parameters. It may be a consequence of confusion in what “defensive programming” paradigm really is. I will give a simple example – Let’s say we have a following code snippet: public class HashWriter : IHashWriter { public bool SaveHashItem(int duration, string hashId, string itemKey, T item) { var retVal = […]

Continue reading


 Covariance

Covariance & Contravariance are one of the most confusing terms in C#, no surprise it’s very popular for geeky questions in job interviews. Any time someone mentions those terms, it takes quite a while to refresh my knowledge about it. So, I decided to write a couple posts explaining them in the simplest and shortest […]

Continue reading