Nós escrevemos código para pessoas, não para máquinas. Entenda que escrever código é um exercício de comunicação, e comunique-se melhor!

Nós escrevemos código para pessoas, não para máquinas. Entenda que escrever código é um exercício de comunicação, e comunique-se melhor!
Entenda melhor o princípio que não trata apenas de separar as coisas, mas também de juntá-las quando são relacionadas. Reduza o impacto das alterações!
Você provavelmente já conhece o conceito da Inversão de Dependências, e talvez já aplique usando DI. Mas o buraco é mais embaixo. Descubra porque.
Então você faz amplo uso das Interfaces, e mesmo assim o sistema continua amarrado, engessado. O que acontece? Veja os casos em que Interfaces são realmente úteis, e como aplicar.
Exceções geralmente são tratadas sem critério, mas há apenas dois casos bem específicos em que você deve capturá-las. Veja como fazer o melhor uso das exceções.