Um pouco de histórico: como líder de equipe, uso o NDepend uma vez por semana para verificar a qualidade do nosso código. Especialmente a cobertura de teste, linhas de código e métricas de complexidade ciclomática são inestimáveis para mim. Mas quando se trata de ciclos de nivelamento e dependência, estou um pouco ... bem preocupado. Patrick Smacchia tem um bom post no blog que descreve o objetivo da nivelação.
Para ser claro: em "ciclo de dependência" eu entendo uma referência circular entre dois namespaces.
Atualmente, estou trabalhando em uma estrutura de GUI baseada em Windows CE para instrumentos incorporados - pense na plataforma gráfica do Android, mas em instrumentos de ponta muito baixa. A estrutura é um conjunto único com cerca de 50.000 linhas de código (testes excluídos). A estrutura é dividida nos seguintes namespaces:
- Subsistema de Navegação Principal e Menu
- Subsistema de tela (Apresentadores / Exibições / ...)
- Controles / camada de widget
Hoje, passei o meio dia tentando trazer o código para níveis adequados [graças ao Resharper sem problemas em geral], mas em todos os casos existem alguns ciclos de dependência.
Então, minha pergunta: quão estritamente você segue a regra "No Dependency Cycle"? A nivelação é realmente tão importante?