Sobes.tech
Junior

Cosa significa, secondo te, scrivere codice di qualità?

sobes.tech AI

Risposta dell'AI

Pulizia, leggibilità, manutenibilità, scalabilità e conformità ai requisiti.

Aspetti principali:

  • Pulizia e leggibilità:

    • Uso di nomi comprensibili e descrittivi per variabili, funzioni e classi.
    • Rispetto di una guida di stile di codifica unificata.
    • Formattazione corretta del codice (indentazioni, spazi).
    • Rimozione di duplicazioni di codice (DRY - Don't Repeat Yourself).
    • Commenti chiari nelle parti non ovvie del codice.
  • Manutenibilità:

    • Facilità di apportare modifiche e correggere errori.
    • Modularità: suddivisione delle funzionalità in blocchi piccoli e indipendenti.
    • Basso accoppiamento e alta coesione.
    • Inclusione di test automatizzati (unitari, di integrazione, end-to-end).
  • Scalabilità:

    • Capacità del sistema di gestire un volume crescente di dati o carico senza deterioramento significativo delle prestazioni.
    • Uso efficiente delle risorse.
  • Conformità ai requisiti:

    • Il codice implementa correttamente la logica di business e i requisiti funzionali.
    • Assenza di bug critici e vulnerabilità.

Esempio di struttura di un test di qualità in Python:

# filename: test_user_creation.py

import pytest
from my_application.models import User
from my_application.services import create_user

def test_user_creation_successful():
    # Caso di test per creazione utente riuscita
    username = "test_user"
    email = "test@example.com"

    # Azione: Creare un utente
    new_user = create_user(username, email)

    # Asserzione 1: Verificare se l'oggetto utente è stato creato
    assert isinstance(new_user, User)

    # Asserzione 2: Verificare che il nome utente sia corretto
    assert new_user.username == username

    # Asserzione 3: Verificare che l'email sia corretta
    assert new_user.email == email

def test_user_creation_duplicate_username():
    # Caso di test per fallimento con nome utente duplicato
    username = "existing_user"
    email = "another@example.com"

    # Precondizione: Creare un utente esistente
    create_user(username, "existing@example.com")

    # Azione & Asserzione: Tentare di creare utente con nome duplicato e aspettarsi eccezione
    with pytest.raises(ValueError, match="Username already exists"):
        create_user(username, email)

# ... altri casi di test ...