Os desenvolvedores são cada vez mais cobrados por performance de desenvolvimento, flexibilidade e fazer com seus sistemas fiquem cada vez mais integrados. Utilizando uma metodologia de componentização de software você pode ganhar essa performance e flexibilidade. Em alguns casos projetos de seis meses passaram a demorar dois, três meses de desenvolvimento.
Existem vários frameworks para PHP mas vale a pena citar aqui o Laravel framework que possui vários recursos para otimizar o trabalho do desenvolvedor e uma das maiores facilidades que ele oferece é a de criar componentes de uma forma muito fácil, versioná-los e instala-los em diversos sistemas que sejam em PHP. Para isso utilizamos, além do framework e da linguagem PHP, o gerenciador de dependências composer com um servidor Satis e o sistema de versionamento GitLab, que é um GitHub que você pode instalar para ter dentro de casa. Detalhes estarão nas referências. Mas vamos falar do mais importante, como pensar em componentes.

Como penso em componentização?

Para começar, você deve fazer uma boa análise do que você quer ter no final do túnel ou pelo menos até aonde deixam você enxergar, todos sabemos que é impossível ver o final de um software, sempre há melhorias. Fazendo uma boa análise você terá extraído os requisitos, normalmente cada requisito pode virar um componente dependendo de como você estrutura um requisito.

Exemplificando

Vou utilizar um exemplo muito simples, um cadastro de pessoas. Todos os sistemas de gestão possuem um cadastro de pessoas, isso é um requisito do nosso sistema e além de analisá-lo, nós vamos implementá-lo, desenvolver esse requisito. Agora imagine que você tem mais um software para fazer, mais um cadastro de pessoas. Por que fazer tudo de novo? É ai que você ganha tempo com componentes. Se você tiver seu cadastro de pessoa como um componente, basta instalá-lo e sair usando, seja Models, Views, Services e até mesmo Controllers.

selecao_240

Outra forma de tornar pensar em um componente é desenvolvendo uma integração direta de um software com outro, isso pode ser tanto com um acesso direto a banco, como uma biblioteca que abstrai vários métodos de uma API.

selecao_241

Mas nem tudo é alegria na componentização, você precisa planejar e pensar muito em o que você quer que vários componentes façam em conjunto. Você precisa ter a noção que talvez um sistema “X” usará um pacote na versão 1.5 e outro “Y” na versão 1.8 e tudo precisa funcionar de acordo, mesmo eles trabalhando de forma integrada.
Algo muito comum é fazer com que um componente utilize outro. Pense no nosso cadastro de clientes, ele poderia utilizar um componente que abstrai um cadastro de usuários, ou seja, neste caso eu terei dois componentes interagindo entre si, isso nos faz ganhar muito tempo pois o reaproveitamento de código é imenso.

Conclusão

A componentização de software traz muitos benefícios, além de performance você irá ganhar mais qualidade no seu código e legibilidade, caso sempre busque seguir as boas práticas mas também pode ser um enorme vilão caso em casos o qual não são bem pensados.

Autor: Kalel Branco Chaves