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/it/7-bank-project/3-data/assignment.md

7.1 KiB

Compito di Refactoring del Codice e Documentazione

Obiettivi di Apprendimento

Completando questo compito, praticherai competenze essenziali di sviluppo software che gli sviluppatori professionisti utilizzano quotidianamente. Imparerai a organizzare il codice per renderlo più manutenibile, ridurre la duplicazione attraverso l'astrazione e documentare il tuo lavoro per futuri sviluppatori (incluso te stesso!).

Un codice pulito e ben documentato è cruciale per progetti di sviluppo web reali, dove collaborano più sviluppatori e le basi di codice evolvono nel tempo.

Panoramica del Compito

Il file app.js della tua app bancaria è cresciuto significativamente con funzionalità di login, registrazione e dashboard. È il momento di rifattorizzare questo codice utilizzando pratiche di sviluppo professionali per migliorarne la leggibilità, la manutenibilità e ridurre la duplicazione.

Istruzioni

Trasforma il tuo attuale codice app.js implementando queste tre tecniche principali di refactoring:

1. Estrai Costanti di Configurazione

Compito: Crea una sezione di configurazione all'inizio del file con costanti riutilizzabili.

Guida all'implementazione:

  • Estrai l'URL base dell'API del server (attualmente hardcoded in più punti)
  • Crea costanti per i messaggi di errore che appaiono in più funzioni
  • Considera di estrarre i percorsi delle rotte e gli ID degli elementi utilizzati ripetutamente

Esempio di struttura:

// Configuration constants
const API_BASE_URL = 'http://localhost:5000/api';
const ROUTES = {
  LOGIN: '/login',
  DASHBOARD: '/dashboard'
};

2. Crea una Funzione Unificata per le Richieste

Compito: Costruisci una funzione riutilizzabile sendRequest() che elimini il codice duplicato tra createAccount() e getAccount().

Requisiti:

  • Gestire sia richieste GET che POST
  • Includere una gestione degli errori adeguata
  • Supportare diversi endpoint URL
  • Accettare dati opzionali nel corpo della richiesta

Guida alla firma della funzione:

async function sendRequest(endpoint, method = 'GET', data = null) {
  // Your implementation here
}

3. Aggiungi Documentazione Professionale al Codice

Compito: Documenta il tuo codice con commenti chiari e utili che spiegano il "perché" dietro la tua logica.

Standard di documentazione:

  • Aggiungi documentazione alle funzioni spiegando scopo, parametri e valori restituiti
  • Includi commenti inline per logiche complesse o regole aziendali
  • Raggruppa le funzioni correlate con intestazioni di sezione
  • Spiega eventuali pattern di codice non ovvi o workaround specifici per il browser

Esempio di stile di documentazione:

/**
 * Authenticates user and redirects to dashboard
 * @param {Event} event - Form submission event
 * @returns {Promise<void>} - Resolves when login process completes
 */
async function login(event) {
  // Prevent default form submission to handle with JavaScript
  event.preventDefault();
  
  // Your implementation...
}

Criteri di Successo

Il tuo codice rifattorizzato dovrebbe dimostrare queste pratiche di sviluppo professionale:

Implementazione Esemplare

  • Costanti: Tutte le stringhe magiche e gli URL sono estratti in costanti chiaramente denominate
  • Principio DRY: La logica comune delle richieste è consolidata in una funzione riutilizzabile sendRequest()
  • Documentazione: Le funzioni hanno commenti JSDoc chiari che spiegano scopo e parametri
  • Organizzazione: Il codice è raggruppato logicamente con intestazioni di sezione e formattazione coerente
  • Gestione degli Errori: Migliorata la gestione degli errori utilizzando la nuova funzione di richiesta

Implementazione Adeguata

  • Costanti: La maggior parte dei valori ripetuti è estratta, con alcune piccole eccezioni hardcoded
  • Fattorizzazione: Creata una funzione base sendRequest(), ma potrebbe non gestire tutti i casi limite
  • Commenti: Le funzioni principali sono documentate, anche se alcune spiegazioni potrebbero essere più complete
  • Leggibilità: Il codice è generalmente ben organizzato con alcune aree da migliorare

Necessita di Miglioramenti

  • Costanti: Molte stringhe magiche e URL rimangono hardcoded nel file
  • Duplicazione: Rimane una significativa duplicazione di codice tra funzioni simili
  • Documentazione: Commenti mancanti o inadeguati che non spiegano lo scopo del codice
  • Organizzazione: Il codice manca di una struttura chiara e di un raggruppamento logico

Test del Codice Rifattorizzato

Dopo il refactoring, assicurati che la tua app bancaria funzioni ancora correttamente:

  1. Testa tutti i flussi utente: Registrazione, login, visualizzazione del dashboard e gestione degli errori
  2. Verifica le chiamate API: Conferma che la tua funzione sendRequest() funzioni sia per la creazione che per il recupero dell'account
  3. Controlla gli scenari di errore: Testa con credenziali non valide e errori di rete
  4. Rivedi l'output della console: Assicurati che non siano stati introdotti nuovi errori durante il refactoring

Linee Guida per la Consegna

Invia il file app.js rifattorizzato con:

  • Intestazioni di sezione chiare che organizzano le diverse funzionalità
  • Formattazione e indentazione del codice coerenti
  • Documentazione JSDoc completa per tutte le funzioni
  • Un breve commento all'inizio che spiega il tuo approccio al refactoring

Sfida Bonus: Crea un semplice file di documentazione del codice (CODE_STRUCTURE.md) che spieghi l'architettura della tua app e come le diverse funzioni lavorano insieme.

Connessione al Mondo Reale

Questo compito rispecchia il tipo di manutenzione del codice che gli sviluppatori professionisti svolgono regolarmente. In contesti industriali:

  • Revisioni del codice valutano la leggibilità e la manutenibilità come in questo compito
  • Debito tecnico si accumula quando il codice non viene rifattorizzato e documentato regolarmente
  • Collaborazione di squadra dipende da un codice chiaro e ben documentato che i nuovi membri del team possono comprendere
  • Correzione di bug è molto più semplice in basi di codice ben organizzate con astrazioni adeguate

Le competenze che stai praticando qui - estrazione di costanti, eliminazione della duplicazione e scrittura di documentazione chiara - sono fondamentali per lo sviluppo software professionale.


Disclaimer:
Questo documento è stato tradotto utilizzando il servizio di traduzione AI Co-op Translator. Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale umana. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.