O processo de formação de um profissional de TI é baseado na constante atualização de conceitos, seja no âmbito gerencial quanto no técnico. Ao pensarmos no universo da programação, vemos que existem uma infinidade de linguagens, cada uma com suas particularidades e complexidades. Considerando estes fatores é comum encontramos sistemas sem um padrão de desenvolvimento consistente e com erros recorrentes por falta de noções básicas que auxiliariam a reduzir problemas e custos para os projetos.

Robert C. Martin, também conhecido como “Uncle Bob” (Tio Bob), na década de 90 pesquisou esses problemas recorrentes e definiu uma série de princípios para solucioná-los, dos quais posteriormente formaram um acrônico conhecido como SOLID (sólido em inglês). Cada letra representa um conceito:

  • Single responsibility principle: princípio da responsabilidade única.
    • O importante deste princípio é ter em mente que uma classe ou um método deve responder à apenas um propósito para evitar um comportamento inesperado de quem usa o recurso.
    • O resultado final será um sistema de fácil manutenção além do benefício da modularidade.
    • Uma boa forma para avaliar se este princípio está sendo aplicado é analisar se o conteúdo do método e/ou classe faz juízo ao nome utilizado.
  • Open/closed principle: princípio do aberto/fechado.
    • Aberto para expansão, mas fechado para modificação, significa que quando uma nova funcionalidade surge, a classe deve permitir que seu comportamento seja expansível, mas sem a necessidade de abrir o código existente.
    • Uma boa forma de aplicar este princípio seria através do uso de padrões de projeto como Factory.
  • Liskov substitution principle: princípio da substituição de Liskov.
    • Barbara Liskov defende que o comportamento de um método chamado através de uma classe pai deve ser o mesmo se chamado através de uma classe filha.
    • Em outras palavras, devemos ter cuidados ao usar herança pois, apesar da herança ser um mecanismo poderoso, é necessário ser analisada com critérios voltados ao comportamento e não somente ao tipo das classes a serem criadas.
  • Interface segregation principle: princípio da segregação de inferfaces.
    • Ter várias interfaces com objetivos únicos é melhor em comparação a uma interface com muitos propósitos.
    • Isto nos conduz a módulos enxutos, pois tem poucos comportamentos e cada ponto do sistema utiliza apenas o recurso necessário.
    • Uma interface com muitos comportamentos confunde o usuário e possibilita a quebra da arquitetura do sistema.
  • Dependency inversion principle: princípio da inversão de dependência.
    • Uma classe não deve depender diretamente de outra através da implementação, mas sim através de uma abstração.
    • Esta prática nos dá a possibilidade de substituir a implementação sem afetar os pontos que utilizam a classe ou método, ou seja, este princípio preza o baixo acoplamento.

A QAT Global sempre prezou pela qualidade dos projetos que desenvolve e busca meios para capacitar e melhorar a formação de seus funcionários. Durante as últimas semanas foi aberto um espaço para discutir e disseminar os conceitos SOLID e assim proporcionar um momento para compartilhar conhecimento e agregar valores tanto para a empresa quanto para os funcionários.

Para saber mais sobre SOLID, veja os links abaixo:

Artigo: Robson Castilho, Desenvolvendo software com qualidade <http://robsoncastilho.com.br/2013/02/06/> (Português)
Vídeo: Princípios SOLID, qualidade em programação em 5 conceitos <http://www.infoq.com/br/presentations/principios-solid> (Português)
Artigo: Uncle Bob <http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod> (Inglês)
Artigo: S.O.L.I.D. Software Development, One Step at a Time <http://www.codemag.com/article/1001061> (Inglês)
Vídeo: SOLID JavaScript In A Wobbly <https://www.youtube.com/watch?feature=player_embedded&v=TAVn7s-kO9o> (Inglês)