Eu sempre tento seguir o princípio DRY estritamente no trabalho; toda vez que repito o código por preguiça, ele volta mais tarde quando preciso manter esse código em dois lugares.
Mas muitas vezes escrevo métodos pequenos (talvez 10 a 15 linhas de código) que precisam ser reutilizados em dois projetos que não podem se referir um ao outro. O método pode ter algo a ver com networking / strings / MVVM, etc. e é geralmente um método útil, não específico ao projeto em que ele se encontra originalmente.
A maneira padrão de reutilizar esse código seria criar um projeto independente para o código reutilizável e referenciar esse projeto quando você precisar. O problema é que acabamos em um dos dois cenários abaixo do ideal:
- Acabamos com dezenas / centenas de pequenos projetos - cada um para abrigar as pequenas classes / métodos que precisávamos reutilizar. Vale a pena criar um novo totalmente
.DLL
só para um pouquinho de código? - Terminamos com um único projeto que contém uma coleção crescente de métodos e classes não relacionados. Essa abordagem é para o que uma empresa na qual eu costumava trabalhar; eles tinham um projeto nomeado
base.common
que tinha pastas para coisas como eu mencionei acima: rede, manipulação de strings, MVVM etc.
Então, minha pergunta é:
Como uma equipe de software melhor reutiliza pequenos pedaços de código entre projetos?
Estou particularmente interessado se alguém trabalhou em uma empresa que possui políticas nessa área ou que se deparou com esse dilema pessoalmente como eu.
note: Meu uso das palavras "Projeto", "Solução" e "Referência" é proveniente de experiência em desenvolvimento .NET no Visual Studio. Mas tenho certeza de que esse problema é independente de idioma e plataforma.