Recentemente, um desenvolvedor sênior com quem trabalho fez questão de exigir que os desenvolvedores obtenham a versão mais recente e compilem como parte de seu projeto uma importante biblioteca interna. Isso contrasta com o contra-argumento de que as equipes de projeto devem trabalhar com uma versão estável obtida de um repositório Maven interno no qual o desenvolvedor argumentou que ter o código fonte disponível nas máquinas do desenvolvedor economiza tempo, pois eles podem ler a fonte das bibliotecas código para determinar se a funcionalidade necessária está disponível.
O desenvolvedor sênior tem um argumento válido? Ou está exigindo que os desenvolvedores leiam o código-fonte das bibliotecas, indo contra a filosofia básica do encapsulamento e até mesmo tendo a biblioteca em primeiro lugar?
fonte
A sugestão é
Você poderia fazer uma sugestão alternativa
fonte
Eu não compraria o argumento de que ter a capacidade de ler a fonte localmente é um benefício, mas se a biblioteca estiver em desenvolvimento ativo (possivelmente para adicionar suporte às necessidades do seu projeto), não acho razoável exigir que os desenvolvedores baixe atualizações com frequência (possivelmente várias vezes ao dia). Eu acho que faz sentido para os negócios disponibilizar um binário compilado (e testado por unidade) em vez de exigir que os desenvolvedores compilem a partir da fonte.
Você tem a capacidade em seu projeto de configurar algum tipo de repositório compartilhado onde a versão compilada mais recente estaria disponível? Idealmente, você deseja um servidor de CI que busque e construa de acordo com um cronograma, mas mesmo que seja apenas um recurso de rede que um dos líderes da equipe seja responsável pela atualização periódica, isso pode ajudar. Claro, isso deve estar no prato da equipe da biblioteca, mas obviamente eles não estão interessados, então você terá que pegar a folga deles.
fonte
Eu trabalhava para uma grande empresa de software que estava constantemente "alimentando cães" seu próprio software com sistemas internos de negócios.
Eles viram isso como outro nível de teste.
O fato de eu concordar com uma empresa é uma coisa boa.
Eu acho que forçar você a baixar e compilar a versão mais recente é um passo longe demais, a menos que a etapa de compilação seja uma parte importante da oferta de sua empresa de vender ou até terceirizar uma biblioteca.
fonte
Embora ter o código fonte disponível possa ser um benefício, se você tiver um agente de criação de IC monitorando o repositório, faz muito mais sentido que esse agente compile essa biblioteca e copie-a em projetos dependentes como externo, do que exigir que os desenvolvedores execute duas etapas diferentes de compilação ao criar sua cópia.
Atualmente, estou trabalhando em um projeto que não está conectado a um agente de construção, que exige a criação de um subaplicativo antes de criar o aplicativo principal. É uma dor séria no meu traseiro; Para fazer uma alteração no sub-aplicativo, preciso primeiro criar o projeto inteiro, depois ir para uma pasta de sub-construção, obter o produto compilado e copiá-lo para uma sub-pasta diferente, antes de criar todo o projeto novamente para garantir que a versão mais recente do sub-aplicativo esteja incluída na compilação do aplicativo principal. NÃO é assim que deve ser feito; no mínimo, deve haver um script MSBuild que automatize esse processo, e eu preferiria que o agente de construção atualize os externos sempre que um novo código for confirmado no tronco.
fonte
Como tantas pessoas responderam que não faz sentido que todos construam uma biblioteca interna, apresentarei o ponto de vista oposto que poderia justificar os motivos:
Você usa muito a biblioteca e não há documentação. Portanto, todos devem ter a fonte de referência. Se for uma biblioteca usada com muita frequência, ter a referência à mão pode ser útil
Quando as pessoas começam a escrever seu próprio código que depende da biblioteca e algo na biblioteca não funciona, em vez de jogar os braços no ar, se a biblioteca for construída localmente, torna-se muito fácil entrar diretamente no código da biblioteca
Não estou dizendo que a decisão dele seja justificada, apenas apontando que a) a questão apresentou um lado da história eb) poderia haver motivos plausíveis.
fonte
Esse tipo de teste seria melhor feito de fato. O problema é que isso deve ser feito por testadores, não por desenvolvedores . Nesse sentido, não é seu trabalho nem o de desenvolvedor de bibliotecas.
Pelo que você descreve, parece que não há testadores no projeto - se esse for o caso, é um problema de gerenciamento e bastante sério.
Raciocínio bastante manco. Quando a biblioteca de versões mais recente falha ao compilar com o projeto de versão mais recente, pode haver várias razões para isso - apenas pesquisar o código-fonte lib pode ser uma perda de tempo.
Qualquer que seja o motivo, fazer uma análise preliminar da falha significaria desperdiçar o tempo do desenvolvedor em um trabalho que deveria ser feito pelos testadores.
Outra coisa acima do raciocínio esquecido é inevitável (e bastante dolorosa na minha experiência) as perdas de produtividade que se seguem quando é preciso interromper o fluxo alternando entre atividades de desenvolvimento e controle de qualidade.
Quando há testadores na equipe, essas coisas são realmente simples e podem ser tratadas com muito mais facilidade. O que seu desenvolvedor "sênior" lançou para você é basicamente um requisito de teste preliminar.
As etapas a seguir são atividades típicas de controle de qualidade: esclarecer detalhes de requisitos, projetar um cenário de teste formalizado, negociar como lidar com falhas de teste.
fonte
O que o Sr Dev está sugerindo faz pouco sentido para mim, na melhor das hipóteses. É bom poder procurar fontes, mas existem maneiras melhores de fazê-lo.
Que Repositório de Artefatos você está usando? Você deve implantar um jar de origem para cada versão ao lado da biblioteca compilada. A maioria dos IDEs permitirá anexar isso à biblioteca compilada para navegação na fonte. O Eclipse com o Maven Plugin fará isso automaticamente.
Se você precisar do código mais recente, poderá implantar instantâneos de versão.
fonte
Isso deve acontecer simplesmente no seu script de construção:
Não vejo por que ou como isso é um problema. Além disso, quando algo está faltando na referência, você pode adicioná-lo às fontes e enviar as alterações. É claro que pode parecer um pouco assustador que a biblioteca possa mudar sob seus pés, mas se os mantenedores da biblioteca fizerem seu trabalho corretamente, isso é uma coisa boa.
fonte