Design GuideLines — Parte I
Você sabe a importância de definir um design guidelines para sua equipe?
Times que não entram em acordo e não discutem as formas de como o código deve ser escrito, correm o risco de gerar projetos com formas distintas de escrita de código.
Para evitar uma bagunça generalizada, o primeiro passo é discutir e criar o design guidelines para o time.
Em um design guidelines podem conter dicas e informações sobre performance e boas práticas em relação a tecnologia que o time desenvolve.
Ah! mas já existe o Clean Code, sim ele existe. Mas todos os devs do seu time leram o livro? E todos seguem as mesmas diretrizes? Inclusive os devs jr.? Se a resposta for sim, você não terá problemas com estilo por ex. Minha recomendação é fazer um resumo focando no que o time considera importante.
Mas conhecer e aplicar o Clean Code é o suficiente? De forma macro não, porque existe outro elemento, a linguagem do negócio, que também precisa ser discutida, entendida e definida, esse trabalho não é desenvolvido apenas por desenvolvedores, é preciso incluir o time de negócios. Sim estou falando da Linguagem Ubíqua, mas isso ultrapassa o alvo dessa discussão nesse momento, assim como a DSL (Domain Specific Languages ou Linguagens Específicas de Domínio).
Algumas empresas, ao desenvolver uma linguagem, disponibilizam um guidelines sobre sua tecnologia, mas muitos desenvolvedores não leem e não aplicam as regras. Por isso é necessário trazer essa discussão para o time, para definir e explicitar as regras, principalmente para os recém chegados. E infelizmente poucas empresas possuem um processo bem estruturado de onboarding.
Existe também uma forte discussão sobre qual idioma utilizar na codificação, isso também deve ser discutido, padronizado e definido.
Elementos
Podemos citar como componentes a serem considerados na definição de estilo e nomeação os seguintes elementos:
- Definir o idioma.
- Considerar o design guideline da tecnologia utilizada, caso exista.
- Discutir, definir e criar o design guidelines para a equipe.
- Divulgar os padrões.
Definir o idioma
Aqui não existe consenso, o time precisa decidir qual idioma será utilizado, mas falando brevemente, quais as vantagens e desvantagens de utilizar ou não o idioma nativo?
Vantagens de codificar em inglês
A escrita do código fica uniforme e aderente aos patterns e a própria linguagem de programação em si, que são em inglês.
Se você trabalha em um time que desenvolve componentes, a escolha pelo inglês pode ser considerada, já que não terão contato com termos de negócio nos projetos.
Desvantagens de codificar em inglês
Os problemas de codificar em inglês são:
- A equipe precisa ser apta no idioma, e quando isso não ocorre, é preciso definir um dicionário de termos traduzidos. Mas acredite, existem tantos termos que seria mais viável a equipe falar o idioma.
- Tradução da Linguagem Ubíqua e desconformidade. Aqui o problema é sério. Se o time vai codificar em inglês as operações de negócio também devem ser traduzidas, e acredite, podem aparecer coisas estranhas. Sobre a violação da Linguagem Ubíqua pegue como exemplo o método AddCustomer, na área de negócio da sua empresa, o processo de inclusão de um novo cliente na carteira da empresa realmente é chamado de AddCustomer no dia-a-dia? Acredito que não, ainda que seja outro termo utilizado, pense em como ficaria em inglês, faz sentido? É o que pronunciam no dia-a-dia?
- As conversas com a equipe de negócios podem ficar confusas, e todos os desenvolvedores devem saber claramente a qual termo de negócio em português equivale ao que está no código em inglês.
- As documentações serão escritas em inglês ou em português?
- Adaptação: As pessoas que ingressam no time terão que se adaptar, por que todos começamos a codificar em português.
Vantagens de codificar em português
Codificar em idioma nativo é mais fácil e temos aderência forte com os termos utilizados na área de negócios e a Linguagem Ubíqua fica intacta. Não é necessário um dicionário de termos traduzidos, e as documentações em português irão refletir o que encontramos no código.
Desvantagens de codificar em português
A principal desvantagem é a mistura no código de inglês com português, por que não traduzimos os patterns, então você acaba escrevendo coisas como: ClienteService, ProdutoService, e etc., sendo que CustomerService, ProductService soam melhor.
Outra dificuldade de codificar em português, é definir os limites do que deve de fato estar em português ou não. Tome como exemplo o Specification Pattern, ali fica uma mistura clara entre inglês e português que pode gerar confusão.
Veja abaixo como fica em cada abordagem do ponto de vista do desenvolvedor e considerando a Linguagem Ubíqua.
Essa foi a primeira discussão para se pensar antes da definição do Design Guidelines. Espero que tenha gostado das ideias e que faça sentido para seu dia-a-dia.