Número da versão como parte de um nome de arquivo

15

Vejo que alguns softwares têm o número da versão incluído como parte do nome do arquivo, enquanto outros não. Estou mais acostumado com o último tipo e acho que é mais popular, mas às vezes vejo o tipo anterior nas bibliotecas javascript. Por exemplo, o nome do arquivo do jQuery é como em jquery-2.1.0.jsvez de jquery.js. Sempre que atualizo esses tipos de arquivos, tenho que procurar os locais em outros programas que carregam esses arquivos, alterar o nome do arquivo a que eles se referem e excluir manualmente a versão mais antiga dessas bibliotecas. Isso é inconveniente para mim, portanto, prefiro renomear o arquivo para excluir o número da versão e manter o nome do arquivo mencionado para não incluir o número da versão.

Suspeito que esses números sejam para algum tipo de controle de versão, mas não estou claro quando e como eles são usados.

  • Quais são os prós e os contras de incluir números de versão no nome do arquivo?
  • Existe um consenso de fato sobre quais áreas do software ou idiomas usam o número da versão no nome do arquivo e quais áreas / idiomas não? Se sim, existe alguma razão para isso?
sawa
fonte
3
maior vantagem é que você pode garantir alterações significativas não acontecem antes de estar pronto para eles
catraca aberração
@ratchetfreak Você não atualiza quando não está pronto. Você?
sawa
2
@sawa Suponha que jQuery.com/jquery.js seja o URL da versão mais recente e é a isso que seu código se refere. O que aconteceria se o jQuery publicasse uma atualização radical? Claro, você conectar-se a sua própria cópia local, mas eu acho que isso é o que catraca meios Anormal
11684
@ 11684 Entendi, entendi.
sawa
1
Gostaria de salientar, no exemplo do jquery, que as versões hospedadas na CDN do Google e do cdnjs.com colocam a versão na árvore de diretórios, em vez do nome do arquivo. (O jQuery CDN a partir jquery.com e Microsoft ambos têm a versão no nome do arquivo.)
Brian S

Respostas:

24
  1. Faz sentido especificar a versão necessária. O comportamento em que você pode confiar pode ter mudado; portanto, o mais novo nem sempre é melhor. Primeiro, teste se uma nova versão de uma biblioteca funciona para você. Em seguida, atualize explicitamente.

  2. No caso de recursos da web, ter a versão como parte do nome do arquivo é importante no contexto do armazenamento em cache . Para recursos estáticos, jquery.jsvocê precisará de um tempo de cache muito longo antes de ser buscado novamente. No entanto, durante uma atualização, você deseja que seu código use a nova versão imediatamente , em vez de fazer com que os clientes alternem para a nova versão durante o dia seguinte. Como foo-1.2.3.jsé um recurso diferente foo-1.2.4.js, nenhum cache ficará no caminho.

amon
fonte
1
+1, embora eu ache que essa resposta seja um pouco de gume único. De fato, existem situações em que "nenhum número de versão" pode ser a melhor escolha. Veja minha resposta abaixo.
Doc Brown
3

(Excluindo a situação de cache da web mencionada por @amon): Presumo que você faça uma cópia local de uma biblioteca de terceiros para uso do seu programa, caso contrário, a necessidade de um número de versão seria óbvia. O cenário de uso dessa biblioteca de terceiros no sistema de software que você está desenvolvendo pode ser um destes dois:

  • todas as partes do seu programa que estão usando a lib sempre compartilharão a mesma versão da lib (idealmente "a mais nova"), e você atualizará a lib de tempos em tempos. Em seguida, manter o número da versão como parte do nome do arquivo pode ser realmente entediante, e eu recomendaria retirar o número da sua cópia local do arquivo, se possível. Observe que essa é apenas uma boa idéia se você tiver certeza de que o fornecedor terceirizado mantém a lib principalmente compatível com versões anteriores às versões anteriores.

  • você espera ter algumas partes do seu programa que precisam da versão A e outras que precisam da versão B. Então, obviamente, você precisará de um número de versão para a lib de terceiros. Observe que essa situação também pode ocorrer quando você não pode testar facilmente todas as partes do software usando a lib de uma só vez após a introdução de uma nova versão.

E se você é um fornecedor de bibliotecas, inclua o número da versão por padrão, mas deixe o usuário dessa lib decidir por si mesmo se ele mantém esse número ou retira-o.

Doc Brown
fonte
Sim. Você está certo. Eu estava mencionando o primeiro dos seus dois casos.
31814 sawa
1
@sawa: observe que seu exemplo foi jquery, para o qual o argumento de cache da Web da amon é válido. O raciocínio por trás da minha resposta foi explicar situações diferentes em que "nenhum número de versão" pode ser a melhor escolha.
Doc Brown