Definições de código e boas práticas
Bem vindo(a) ao projeto Eyecare BI! Eu serei seu guia....
Olá! Seja bem vindo(a) ao time de engenharia do Eyecare Bi! Se chegou até aqui, é porque você deseja ficar por dentro dos padrões e boas práticas que devem ser utilizados neste projeto, e com isso contribuir na continuidade e evolução da qualidade do mesmo.
Aqui vamos ser bem simples e diretos, mostrando de forma bem sucinta os padrões e práticas que esperamos de nossos engenheiros.
Vamos dividir este guia em apenas duas categorias:
Frontend - VueJs 2
Utilizamos o framework VueJs 2 em nosso frontend, e por isso temos alguns padrões de JavaScript e do próprio framework a serem seguidos. Abaixo, vamos listá-los:
Tudo é componente: Tudo deve ser componente, em uma aplicação VueJS. Isso quer dizer que coisas que sejam iguais, mesmo em partes diferentes do sistema, devem ser o mesmo objeto, e se comportar da mesma forma, em todos os locais que ele aparace;
DRY: Don't repeat yourself! => Esse é um dos principais fatores de um bom clean code, ainda mais quando falamos de frameworks que trabalham com componentes, com é o VueJs. Um componente deve ser único, e caso ele precise efetuar algo diferente do que foi construído originalmente, um novo deve ser feito, garantindo assim a unicidade de responsabilidade de cada um, indo de acordo com os princípios do S.O.L.I.D;
Nomes de componentes de acordo com as orientações do Vue: PascalCase com mais de uma palavra;
Não criar novos componentes com nomes iguais aos que já existem, mesmo que em pastas diferentes;
Detalhar definição de props dos componentes (type, required, default, etc);
Evitar estilização inline;
Backend - Laravel 8
Boas práticas do PHP 8 em geral (PSR 12);
Todos os aspectos da Orientação à Objetos, como aplicação de interfaces, heranças, etc;
S.O.L.I.D;
Clean Code;
DRY, aqui também;
Service Layer e Repository Pattern;
Form Requests e Route Bindings;
Yoda Style nas condicionais;
Tipificação de argumentos e retornos de métodos;
Classes em PascalCase;
Métodos e variáveis em camelCase;
Utilização de Resources nos payloads de response dos endepoints, e com os atributos em snake_case;
Erros devem logados com a classe Log, do próprio framework.
Last updated