Introdução ao DDD com PHP

Sou um desse profissionais que defende que o PHP é uma linguagem madura o suficiente para adentrar e ser utilizada em ambientes coorporativos, então nada mais justo e lógico que falarmos sobre DDD.

Por se tratar de um assunto extenso irei particionar esse post de forma a não torna-ló exastivo.

Afinal o que é DDD

Domain Driven Design (DDD) siginifica Projeto Orientado ao Domínio. O termo surgiu de um livro escrito por Eric Evans que possui o mesmo título.

Livro de Eric Evans

DDD não é um padrão de desenvolvimento e sim uma abordagem de desenvolvimento de software, utilizando um conjunto de práticas, técnicas e príncipios com foco no domínio e na lógica do domínio.

DDD no fim das contas vem nos fazer pensar de forma orientada a objetos, a questão é que DDD não é algo novo, algumas das boas práticas descritas no livro existem desde epóca remota do SmallTalk. Fato é que por alguns momentos esquecemos o que de fato é orientação a obejtos, se nos falam em orientação a objetos, logo o que nos vem a cabeça é: Herança, Polimorfismo, Encapsulamento e etc, e esquecemos que OO na verdade também tem haver com : Alinhamento do código com o negócio, Foco na reutilização, compromisso com o desaclopamento e o mais importante de tudo independência da tecnologia.

DDD é alheio a tecnologia, seu foco é aproximar os códigos que escrevemos das regras de negócio e como elas devem estar representadas e estruturadas dentro seu sistema. Daí a importância da palavra domínio.

Algumas das boas práticas descritas pelo DDD já utilizamos em alguns Frameworks PHP sem sequer nos dar conta, e com o passar dos artigos espero conseguir mostrar um pouco deles a vocês :)

Linguagem Oblíqua

Se tem algo que todos nós sabemos é que a comunicação e o entendimento do problema é algo essencial para atender aos requesitos do software que nos propuzemos desenvolver. A linguagem obliqua é justamente sobre isso. A ideia é que desenvolvedores, o conhecedor do domínio (geralmente o PO ou scrum master) e todos os demais envolvidos no projeto sejam capaz de se comunicar sem maiores problemas, de forma que essa comunicação também se reflita no código que é produzido.

Representação da equipe utilizando linguagem ubliqua

Trocando em miúdos a idéia é que termos do dia a dia do negócio sejam utilizados pelo time de desenvolvimento, e será a partir dessa comunicação que todo nosso sistema será estruturado, a partir dessa comunicação por exemplo, seremos capazes de definir nosssa Entidades (relaxa, falaremos sobre elas mais a frente).

No próximo episódio

Bem espero ter conseguido aguçar um pouco o interesse de vocês pelo assunto, no próximo post falarei um pouco sobre as camadas de arquitetura. Até o próximo post.