O projeto, eu envolvi, tem uma estrutura de arquivo / pasta de projeto orientada à arquitetura:
Root
|____ Node1
|____ Event Handlers
| |___ <all event handlers of project>
|____ Events
| |___ <all events of project>
|____ Request Handlers
| |___ <all request handlers of project>
|____ Requests
| |___ <all requests of project>
|____ ...
É claro do ponto de vista arquitetônico do sistema (foi proposto pela equipe de desenvolvimento).
É uma estrutura orientada a recursos que foi proposta pela equipe de designers:
Root
|____ Feature #1
|____ Event Handlers
| |___ <all event handlers of Feature #1>
|____ Events
| |___ <all events of Feature #1>
|____ Request Handlers
| |___ <all request handlers of Feature #1>
|____ Requests
| |___ <all requests of Feature #1>
|____ ...
Essa variante está mais próxima dos designers e descreve claramente um recurso a ser implementado.
Nossas equipes começaram uma guerra santa: qual é a melhor abordagem. Alguém poderia nos ajudar e explicar contras e prós do primeiro e do segundo. Talvez haja um terceiro que seja mais útil e benéfico para nós dois.
Obrigado.
Respostas:
Eu votaria no segundo. Na primeira estrutura, os manipuladores de eventos para não
FeatureA
estão completamente relacionados aos manipuladores de eventosFeatureB
. Parece que os desenvolvedores estão trabalhando em um recurso de cada vez e, se você estiver trabalhando em umaFeatureX
solicitação, é muito mais provável que precise ajustar umFeatureX
manipulador de solicitações do que, digamos, umaFeatureZ
solicitação.A propósito, adoro como você fez essa pergunta de um ponto de vista neutro.
fonte
Sempre me senti mais à vontade com a segunda abordagem, mas sempre tenho um "recurso" chamado geral ou comum para as classes verdadeiramente compartilhadas / base.
A abordagem dois mantém as coisas verdadeiramente separadas separadas, mas sem a área "comum" às vezes as separa em áreas nas quais elas não se encaixam bem.
fonte
Por que os inventores de recursos se preocupam com os detalhes da implementação? Se essa é a separação entre os lados do argumento, acho que a resposta é clara. As pessoas que inventam idéias / recursos não determinam a estrutura de arquivos necessária aos implementadores.
Esse é um problema particularmente importante quando a implementação de um recurso abrange várias DLLs, exes, bancos de dados ou outras partes de software.
fonte
Tem que concordar com a segunda abordagem, dadas as duas opções. O primeiro parece apenas uma bolha amorfa. Pelo menos o segundo tem alguma forma.
Realmente depende do tamanho do projeto. Se os "recursos" forem grandes, cada um deles precisará de seu próprio balde distinto.
fonte
Não entendo a terminologia que você está usando, mas tentarei responder de qualquer maneira, pois as duas estruturas parecem ser a abordagem errada.
A menos que você tenha apenas alguns recursos, é necessário agrupá-los em categorias - e isso não parece ser atendido em nenhum dos designs (a menos que seja para isso que o Node1 se destina, mas o "todo X do projeto" sugere caso contrário, e me faz pensar em WTF - existe um Node2?)
Eu poderia considerar algo como isto:
Ou isto:
Mas ambos estão fazendo suposições que podem estar completamente erradas - se você puder atualizar sua pergunta com mais detalhes, posso mudar de idéia. :)
fonte