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