You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/pt-PT/7-bank-project/3-data/assignment.md

7.0 KiB

Refatoração de Código e Trabalho de Documentação

Objetivos de Aprendizagem

Ao completar este trabalho, praticará competências essenciais de desenvolvimento de software que os programadores profissionais usam diariamente. Vai aprender a organizar o código para a sua manutenção, reduzir a duplicação através da abstração e documentar o seu trabalho para futuros programadores (incluindo a si próprio!).

Código limpo e bem documentado é crucial para projetos reais de desenvolvimento web, onde múltiplos programadores colaboram e as bases de código evoluem ao longo do tempo.

Visão Geral do Trabalho

O ficheiro app.js da sua aplicação bancária cresceu significativamente com funcionalidades de login, registo e painel de controlo. É hora de refatorar este código usando práticas profissionais de desenvolvimento para melhorar a legibilidade, a manutenção e reduzir a duplicação.

Instruções

Transforme o código atual do seu app.js implementando estas três técnicas centrais de refatoração:

1. Extrair Constantes de Configuração

Tarefa: Crie uma secção de configuração no topo do seu ficheiro com constantes reutilizáveis.

Orientações para implementação:

  • Extraia a URL base da API do servidor (atualmente hardcoded em vários locais)
  • Crie constantes para mensagens de erro que aparecem em múltiplas funções
  • Considere extrair caminhos de rotas e identificadores de elementos usados repetidamente

Exemplo de estrutura:

// Constantes de configuração
const API_BASE_URL = 'http://localhost:5000/api';
const ROUTES = {
  LOGIN: '/login',
  DASHBOARD: '/dashboard'
};

2. Criar uma Função Unificada de Requisição

Tarefa: Construa uma função reutilizável sendRequest() que elimine código duplicado entre createAccount() e getAccount().

Requisitos:

  • Gerir requisições GET e POST
  • Incluir tratamento de erros adequado
  • Suportar diferentes endpoints URL
  • Aceitar dados de corpo de requisição opcionais

Orientação da assinatura da função:

async function sendRequest(endpoint, method = 'GET', data = null) {
  // A sua implementação aqui
}

3. Adicionar Documentação Profissional ao Código

Tarefa: Documente o seu código com comentários claros e úteis que expliquem o "porquê" da sua lógica.

Padrões de documentação:

  • Adicione documentação às funções explicando o propósito, parâmetros e valores de retorno
  • Inclua comentários inline para lógica complexa ou regras de negócio
  • Agrupe funções relacionadas com cabeçalhos de secção
  • Explique quaisquer padrões de código não óbvios ou soluções específicas para browsers

Exemplo de estilo de documentação:

/**
 * Authenticates user and redirects to dashboard
 * @param {Event} event - Form submission event
 * @returns {Promise<void>} - Resolves when login process completes
 */
async function login(event) {
  // Prevenir o envio padrão do formulário para tratar com JavaScript
  event.preventDefault();
  
  // A sua implementação...
}

Critérios de Sucesso

O seu código refatorado deve demonstrar estas práticas profissionais de desenvolvimento:

Implementação Exemplar

  • Constantes: Todas as strings mágicas e URLs estão extraídas em constantes claramente nomeadas
  • Princípio DRY: A lógica comum de requisição está consolidada numa função reutilizável sendRequest()
  • Documentação: Funções com comentários JSDoc claros explicando propósito e parâmetros
  • Organização: Código logicamente agrupado com cabeçalhos de secção e formatação consistente
  • Tratamento de Erros: Melhor gestão de erros usando a nova função de requisição

Implementação Adequada

  • Constantes: A maioria dos valores repetidos foi extraída, com alguns valores hardcoded menores restantes
  • Fatorização: Função sendRequest() básica criada, mas pode não gerir todos os casos extremos
  • Comentários: Funções chave estão documentadas, embora algumas explicações possam ser mais completas
  • Legibilidade: Código geralmente bem organizado com algumas áreas para melhoria

Necessita de Melhoria

  • Constantes: Muitas strings mágicas e URLs continuam hardcoded pelo ficheiro
  • Duplicação: Continua significativa duplicação de código entre funções similares
  • Documentação: Comentários em falta ou inadequados que não explicam o propósito do código
  • Organização: Código sem estrutura clara e agrupamento lógico

Testar o Seu Código Refatorado

Após a refatoração, garanta que a sua aplicação bancária funciona corretamente:

  1. Teste todos os fluxos de utilizador: Registo, login, apresentação do painel, e tratamento de erros
  2. Verifique as chamadas API: Confirme que a sua função sendRequest() funciona para a criação e recuperação de conta
  3. Teste cenários de erro: Teste com credenciais inválidas e erros de rede
  4. Reveja a saída do console: Assegure que não foram introduzidos erros novos durante a refatoração

Regras de Submissão

Submeta o seu ficheiro app.js refatorado com:

  • Cabeçalhos claros organizando as diferentes funcionalidades
  • Formatação e indentação consistentes no código
  • Documentação JSDoc completa para todas as funções
  • Um comentário breve no topo explicando a sua abordagem à refatoração

Desafio Bónus: Crie um ficheiro simples de documentação de código (CODE_STRUCTURE.md) que explique a arquitetura da sua aplicação e como as diferentes funções interagem.

Ligação ao Mundo Real

Este trabalho reflete o tipo de manutenção de código que programadores profissionais executam regularmente. Em ambientes industriais:

  • Revisões de código avaliam a legibilidade e manutenção como neste trabalho
  • Dívida técnica acumula-se quando o código não é regularmente refatorado e documentado
  • Colaboração de equipa depende de código claro e bem documentado que novos membros podem entender
  • Correção de bugs torna-se muito mais fácil em bases de código bem organizadas e com abstrações adequadas

As competências que está a praticar aqui — extrair constantes, eliminar duplicação e escrever documentação clara — são fundamentais para o desenvolvimento profissional de software.


Aviso Legal: Este documento foi traduzido utilizando o serviço de tradução automática Co-op Translator. Embora nos esforcemos para garantir a precisão, por favor, esteja ciente de que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações incorretas resultantes da utilização desta tradução.