A organização eficiente da estrutura de pastas em um projeto de desenvolvimento de software é essencial para a manutenção, escalabilidade e colaboração entre equipes.
Neste artigo, vamos explorar as boas práticas para a organização de pastas em projetos de back-end e front-end, além de discutir o setup inicial que pode acelerar o desenvolvimento e seguir as melhores práticas de organização de código.
Por que é importante a organização de pastas e setup inicial de projeto?
Vamos entender a importância da organização de pastas em um projeto de desenvolvimento de software e como configurar o ambiente inicial para um projeto back-end e front-end.
- A organização de pastas em um projeto é essencial para manter a estrutura e o fluxo de trabalho organizados e eficientes.
- A configuração inicial de um projeto backend e frontend envolve a criação de uma estrutura de pastas e a configuração de terminais separados para cada parte do projeto.
- A correta organização de pastas e arquivos facilita a manutenção e o desenvolvimento contínuo do projeto, além de melhorar a colaboração entre os membros da equipe.
Organização inicial:
Ao iniciar um projeto de desenvolvimento de software, é crucial estabelecer uma organização inicial eficiente. Isso inclui a criação de uma estrutura de pastas e arquivos bem definida, que facilite a compreensão e a manutenção do código.
- A criação de uma pasta ‘src’ para o backend é uma prática comum e ajuda a centralizar toda a lógica do servidor em um local específico.
- A separação de arquivos e pastas para o backend e frontend permite uma gestão mais clara e eficiente das diferentes partes do projeto.
- A configuração do arquivo ‘package.json‘ para apontar o arquivo inicial para ‘src/server.js’ é uma etapa importante no processo de organização inicial do projeto.
Estrutura de pastas:
A estrutura de pastas em um projeto de desenvolvimento web desempenha um papel fundamental na organização e na acessibilidade do código-fonte. A seguir, abordaremos as subpastas criadas para organizar o código do projeto.
- As subpastas ‘services’, ‘models’ e ‘modules’ são comumente utilizadas para organizar diferentes aspectos do código em um projeto backend.
- A criação de subpastas específicas, como ‘services’, ‘models’ e ‘modules’, ajuda a separar e gerenciar diferentes tipos de funcionalidades e lógicas do projeto.
- A definição de uma estrutura de pastas clara e intuitiva facilita a localização e a manutenção de arquivos e módulos específicos do projeto.
Estrutura de arquivos e separação de responsabilidades:
A estrutura de arquivos do módulo de usuários segue um padrão que facilita a separação de responsabilidades no código e permite escalar o projeto mais facilmente.
- O arquivo modules/user/index.js centraliza as exportações do módulo, o que ajuda na organização do código.
- A ausência de um padrão específico demonstra flexibilidade e adaptabilidade do modelo às necessidades específicas do projeto
- A utilização de palavras em inglês segue a tendência do mercado de desenvolvimento de software.
- O uso do Singleton pattern no serviço de conexão com o banco de dados garante apenas uma instância, o que pode contribuir para a performance do sistema.
Configurações iniciais padronizadas:
O projeto conta com configurações padrões nos arquivos de serviços e rotas, o que proporciona uma estrutura que pode ser reaproveitada entre projetos.
- O arquivo services/knex.js estabelece a conexão com o banco de dados usando Knex.js e implementa o Singleton pattern.
- O módulo de usuários possui um arquivo user.router.js que configura as rotas do módulo, utilizando o router do Express.
- O arquivo modules/user/index.js centraliza as exportações do módulo, o que ajuda na organização do código.
- Essas configurações padronizadas oferecem uma base estruturada que pode ser reaproveitada em diferentes projetos, economizando tempo e esforço de desenvolvimento.
Endpoints e base estruturada:
Com a base estruturada, o projeto está pronto para a implementação dos endpoints e funcionalidades específicas do módulo de usuários.
- A estrutura prévia facilita o desenvolvimento dos endpoints e a implementação das funcionalidades do módulo de usuários.
- A padronização das configurações iniciais contribui para a consistência e qualidade do código ao longo do projeto.
- A base estruturada proporciona uma sólida fundação para a expansão e manutenção do sistema.
Quais são os tipos de endpoints da API?
Os endpoints da API fornecem funcionalidades específicas para lidar com operações relacionadas aos usuários.
- O endpoint GET /users retorna todos os usuários cadastrados no sistema.
- O endpoint GET /users/:id retorna um usuário com base no ID fornecido como parâmetro.
- O endpoint POST /users cria um novo usuário utilizando os dados enviados no corpo da requisição.
- O endpoint DELETE /users/:id remove um usuário com base no ID fornecido como parâmetro.
- O endpoint PUT /users/:id atualiza as informações de um usuário com base no ID fornecido como parâmetro e nos dados enviados no corpo da requisição.
Utilização do Knex.js:
Os métodos dos endpoints chamam os serviços do Knex.js, utilizando os parâmetros recebidos nas requisições.
- O Knex.js é uma biblioteca SQL para Node.js que permite interagir com o banco de dados de forma simplificada.
- A utilização do Knex.js facilita a escrita de consultas SQL e a interação com o banco de dados de forma mais eficiente.
- O uso do Knex.js ajuda a manter a consistência e a segurança das operações de banco de dados.
Importações no arquivo src/server.js:
As importações das rotas são configuradas no arquivo principal da aplicação, centralizando o uso das rotas.
- A centralização das importações no arquivo src/server.js ajuda a manter a organização e a clareza do projeto.
- Essa abordagem facilita a identificação e a manutenção das rotas da aplicação.
- Centralizar as importações no arquivo principal simplifica a adição e remoção de novas rotas.
Conclusão
Ao adotar a estrutura de pastas e o setup inicial apresentados neste artigo, os desenvolvedores podem beneficiar-se de uma abordagem escalável e reutilizável, que promove a clareza nas responsabilidades das camadas e módulos do projeto. Essas práticas, além de acelerar o desenvolvimento, contribuem para a manutenção e colaboração eficaz entre equipes, seguindo as melhores práticas de organização de código.