Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Versionamento Semântico - SemVer

Michel Bueno
September 19, 2019

Versionamento Semântico - SemVer

Números de versão podem ser bastante confusos ao lidar com muitas bibliotecas dentro de um projeto. Especialmente se eles não foram usados ​​corretamente no momento em que foram criados. Esse deck traz a importância do versionamento semântico para o desenvolvimento de software e como usá-lo da maneira correta.

Michel Bueno

September 19, 2019
Tweet

More Decks by Michel Bueno

Other Decks in Programming

Transcript

  1. 2 QUEM SOMOS Michel é um consultor que trabalha na

    ThoughtWorks Brasil fornecendo soluções de software e transformação ágil em clientes locais e regionais. Começou ThoughtWorks como desenvolvedor e se dedica ao desenvolvimento de apps desde então, ajudando os clientes a incorporar os requisitos de usuários e negócios em aplicativos móveis memoráveis e bem-sucedidos. Mobile Engineer MICHEL BUENO Larissa é uma consultora e desenvolvedora que trabalha com a ThoughtWorks Brasil para criar aplicativos móveis. Ela acredita no código para pessoas - usuários E outros desenvolvedores - e trabalha em uma equipe de plataforma móvel, integrando várias equipes em um incrível aplicativo de uma companhia aérea. Mobile Engineer LARISSA BARRA © 2019 ThoughtWorks
  2. O que é? 5 Incrementa o primeiro dígito em 1

    quando há quebra de compatibilidade com a versão atual 5 © 2019 ThoughtWorks MAJOR MINOR PATCH Incrementa o dígito do meio em 1 quando novas funcionalidades são adicionadas, mantendo a compatibilidade com a versão atual Increment o último dígito em 1 quando são adicionadas correções de falhas sem quebra de compatibilidade e sem novas funcionalidades {major}.{minor}.{patch}
  3. Por que usar ? • Se você não sabe o

    que querem dizer os números de versão que usa, não vai saber quando atualizar suas libs • Números de versão nos dizem que tipo de mudança ocorreu em alguma dependência • Em projetos grandes, o uso correto de números de versão permite ter flexibilidade ao usar libs - de quebra dá pra ficarem atualizadas sem quebrar seu código Ex: lib/tal ^1.4.3 #no mínimo essa e menor que 2 Porque faz sentido! 6
  4. “Sem a aderência a algum tipo de especificação formal, os

    números de versão são essencialmente inúteis para gerenciamento de dependências.” - https://semver.org/lang/pt-BR/ 7 © 2019 ThoughtWorks
  5. Quando subir o MAJOR ? • Mudança de versão da

    linguagem • Mudança visual muito grande ◦ Nova experiência de uso ou fluxo diferente de algo previamente já existe • Mudança de contrato ◦ Métodos ou funções ◦ Formato do dado de retorno ou saída • Mudança de compatibilidade com uma versão de SO 9
  6. Quando subir o MINOR ? 10 • Adicionando uma nova

    função / método • Nova tela ou ativação de uma nova feature • Um novo path na sua API • Um novo escopo de usuários ◦ mesma funcionalidade, porém disponível para um novo grupo de pessoas • Mudanças visuais simples ◦ Troca de cores, novos emojis, troca de fontes, etc. (Sempre mantendo a compatibilidade)
  7. Quando subir o PATCH ? • Qualquer correção de bugs

    / falhas que não quebre a compatibilidade com versões anteriores ou adicione novas funcionalidades • Exemplos: ◦ Typos em um texto ◦ Refatorações / otimizações ◦ Alinhamento visual de componentes ◦ etc 11
  8. Carthage O Carthage suporta SemVer da seguinte forma: • >=

    1.0 para "pelo menos a versão 1.0" ou "qualquer versão igual ou acima de 1.0" • ~> 1.0 para "compatível com a versão 1.0" ou "qualquer versão com major version = 1" • ~> 1.1.0 para "compatível com a versão 1.1" ou "a partir desta, qualquer versão com major version = 1 e minor version < 2" • == 1.0 para "exatamente a versão 1.0" Gerenciador de dependencias Swift 12
  9. CocoaPods O CocoaPods suporta SemVer desse jeito aqui: • >

    1.0 para "qualquer versão acima de 1.0" • >= 1.0 para "pelo menos a versão 1.0" ou "qualquer versão igual ou acima de 1.0" • < 1.0 para "qualquer versão abaixo de 1.0" • <= 1.0 para "no máximo a versão 1.0" ou "qualquer versão igual ou abaixo de 1.0" • ~> 1.1.0 para "qualquer versão desta até a 1.2.x, não inclusa" • ~> 1.1 para "qualquer versão com major version = 1 e minor a partir de 1" • '1.0' (sem operador) para "exatamente a versão 1.0" Outro gerenciador de dependências Swift 14
  10. WE LOOK FORWARD TO WORKING WITH YOU Larissa Barra Mobile

    engineer [email protected] | thoughtworks.com https://www.linkedin.com/in/larissabconde/ 17 © 2019 ThoughtWorks Michel Bueno Mobile engineer [email protected] | thoughtworks.com https://www.linkedin.com/in/michelbueno/