Desenvolvi nossa arquitetura de projeto atual e comecei a desenvolvê-la por conta própria (atingindo algo como, revision 40
) .
Estamos desenvolvendo uma estrutura simples de roteamento de metrô e meu design parecia ter sido extremamente bom - vários modelos principais, visões correspondentes, lógica principal e estruturas de dados foram modelados "como deveriam ser" e totalmente separados da renderização, parte algorítmica também foi implementada além dos modelos principais e possuía um número menor de pontos de interseção.
Eu chamaria esse design de escalável, personalizável, fácil de implementar, interagindo principalmente com base na "interação da caixa preta" e, bem, muito bom.
Agora, o que foi feito:
- Comecei algumas implementações das interfaces correspondentes, portou algumas bibliotecas convenientes e escrevi stubs de implementação para algumas partes do aplicativo.
- Eu tinha o documento descrevendo o estilo de codificação e exemplos desse uso de estilo de codificação (meu próprio código escrito).
- Forcei o uso de
C++
técnicas de desenvolvimento mais ou menos modernas , incluindono-delete
código (envolto por ponteiros inteligentes) e etc. - Documentei o objetivo das implementações de interface concretas e como elas devem ser usadas.
- Testes de unidade (principalmente testes de integração, porque não havia muito código "real") e um conjunto de zombarias para todas as abstrações principais.
Fiquei ausente por 12 dias .
O que temos agora (o projeto foi desenvolvido por outros 4 membros da equipe):
- 3 estilos de codificação diferentes em todo o projeto (acho que dois deles concordaram em usar o mesmo estilo :) , o mesmo se aplica à nomeação de nossas abstrações (por exemplo
CommonPathData.h
,SubwaySchemeStructures.h
) , que são basicamente cabeçalhos que declaram algumas estruturas de dados. - Absoluta falta de documentação para as peças recentemente implementadas.
- O que eu poderia chamar recentemente de
single-purpose-abstraction
agora lida com pelo menos 2 tipos diferentes de eventos, tem forte acoplamento com outras partes e assim por diante. - Metade das interfaces usadas agora contém variáveis de membro
(sic!)
. - Uso de ponteiro bruto em quase todos os lugares.
- Testes de unidade desativados porque "
(Rev.57) They are unnecessary for this project
". - ... (provavelmente não é tudo) .
O histórico de confirmação mostra que meu design foi interpretado como um exagero e as pessoas começaram a combiná-lo com bicicletas pessoais e rodas reimplementadas e tiveram problemas para integrar os pedaços de código.
Agora - o projeto ainda faz apenas uma pequena quantidade do que precisa fazer, temos sérios problemas de integração, presumo que haja algum vazamento de memória.
Existe alguma coisa possível para fazer neste caso?
Percebo que todos os meus esforços não tiveram nenhum benefício, mas o prazo é muito breve e temos que fazer alguma coisa. Alguém teve uma situação semelhante?
Basicamente, pensei que um bom (bem, eu fiz tudo que pude) iniciar para o projeto provavelmente levaria a algo bom, no entanto, eu entendo que estou errado.