JNTZN

Tag: phpstorm

  • Guida al formatore PHP: Strumenti, migliori pratiche e configurazione

    Guida al formatore PHP: Strumenti, migliori pratiche e configurazione

    Messy PHP code slows teams down faster than most people expect. A missing space will not crash production, but inconsistent formatting creates friction in code reviews, complicates merges, and makes even simple files harder to trust.

    A good PHP formatter solves that by taking style decisions out of human hands. Instead of debating brace placement or line wrapping in every pull request, you define the rules once, run the tool automatically, and keep the codebase clean from that point forward.

    For solo developers, that means faster work and fewer distractions. For agencies, startups, and larger engineering teams, it means consistent code, stable diffs, easier onboarding, and smoother CI/CD pipelines. The best part is that the strongest PHP formatting tools are either free, open source, or already included in workflows you may be using today, see tools for examples.

    Side-by-side visual of 'messy' PHP code vs 'formatted' PHP code: left pane shows cramped, inconsistent indentation, mixed brace styles, and noisy diffs; right pane shows clean, consistently indented PSR-12 style with ordered imports and aligned operators. Add a small caption or icon showing slowed review (snail) on the messy side and faster review (rocket/check) on the formatted side.

    Che cos’è un formatore PHP e perché è importante

    Un formatore PHP è uno strumento che riscrive il tuo codice affinché rispetti uno stile coerente. Gestisce indentazione, spaziatura, interruzioni di riga, posizionamento delle graffe, ordinamento degli import e altre regole di layout. L’obiettivo non è cambiare ciò che fa il codice, ma come appare, affinché le persone possano leggerlo più facilmente.

    A simple Venn/stacked diagram contrasting Formatter, Linter, and Static Analyzer: three labeled boxes or circles showing Formatter = presentation/style (indentation, spacing, line breaks), Linter = rule violations/syntax checks, Static Analyzer = deeper type/logic issues. Include brief example labels inside each (e.g., formatter: brace placement; linter: unused variable warning; static analyzer: type mismatch).

    Questo rende un formatore diverso da un linter oppure da un analizzatore statico. Un formatore si concentra sulla presentazione e lo stile, un linter controlla problemi di sintassi e violazioni di regole, e un analizzatore statico approfondisce per individuare problemi di tipo, codice morto, logica rischiosa e problemi architetturali. Nella pratica, flussi di lavoro PHP robusti spesso usano tutti e tre.

    La ragione per cui la formattazione è importante è semplice. I team leggono il codice molto più spesso di quanto lo scrivano. Un codice con stile coerente risulta prevedibile. Puoi scansionare le funzioni più rapidamente, confrontare le modifiche in modo più pulito e dedicare il tempo della revisione del codice all’architettura o ai bug invece di discutere tra tab e spazi. Questo è particolarmente utile in progetti open source, passaggi tra cliente, repository aziendali e qualsiasi setup con hook Git automatici o controlli CI. Se diversi collaboratori toccano lo stesso codice ogni settimana, un formatore ripaga rapidamente se stesso.

    Come funziona la formattazione PHP: principi chiave e regole

    La maggior parte dei formatters PHP moderni legge i file come token, e alcuni strumenti operano più vicini alle strutture sintattiche. Non si limitano a sostituire testo in modo cieco. Esaminano il codice, comprendono dove iniziano e finiscono parole chiave, operatori, stringhe, commenti e blocchi, quindi riscrivono il file secondo le regole configurate.

    Questo permette a un formatter adeguato di normalizzare in modo sicuro codice che include sintassi complesse come classi anonime, tipi di unione, attributi, espressioni match, blocchi heredoc e nowdoc e le novità di PHP 8+. Un formatter debole potrebbe rompere questi casi. Uno maturo li gestisce in modo prevedibile.

    Regole principali di formattazione

    In pratica, la maggior parte dei formatters applica le stesse famiglie di regole. Normalizzano indentazione, posizionamento delle graffe, spazi bianchi attorno agli operatori, interruzioni di riga, formattazione degli array e ordinamento degli import. Molti strumenti rimuovono anche import non utilizzati, allineano le istruzioni multilinea e standardizzano le righe vuote tra i membri di una classe. Una qualità chiave da cercare è l’idempotenza: significa che se esegui il formatter due volte, la seconda esecuzione non genera ulteriori cambiamenti. Strumenti idempotenti producono diff stabili, riducono il rumore nelle pull request e rendono più affidabili i run CI.

    Standard PSR e guide di stile

    Nell’ecosistema PHP, PSR-1, PSR-2, e specialmente PSR-12 sono i riferimenti di stile più comuni. PSR-12 è la baseline moderna con cui molte squadre iniziano perché offre una struttura ampiamente accettata per la formattazione e il layout. I formatter più robusti permettono di iniziare con PSR-12, per poi aggiungere preferenze personalizzate, ad esempio l’ordinazione degli import, la virgola finale o l’avvolgimento degli argomenti.

    Formattazione deterministica vs configurabile

    Alcuni strumenti sono molto opinati e puntano a produrre un output prevedibile. Altri sono altamente configurabili e permettono alle squadre di modulare decine di regole. Se gestisci un piccolo team o lavori da solo, un formatter orientato all’opinione può far risparmiare tempo perché riduce l’affaticamento decisionale. Se mantieni un’applicazione legacy o devi allinearti a una guida di stile interna esistente, uno strumento più configurabile è spesso la scelta migliore.

    Screenshot di github.com

    1. PHP-CS-Fixer

    PHP-CS-Fixer è uno degli strumenti di formattazione PHP più utilizzati, e per una buona ragione. È veloce, maturoe altamente configurabile; è stato creato specificamente per far rispettare e correggere gli standard di codifica nei progetti PHP. Se vuoi un formatore serio in grado di scalare da un progetto personale a una grande codebase in produzione, questo è spesso il primo strumento da valutare.

    Quello che rende PHP-CS-Fixer unico è l’equilibrio tra preset ragionevoli e personalizzazione profonda. Puoi iniziare con un set di regole come @PSR12, poi aggiungere o rimuovere singoli fixer man mano che il tuo team rifinisce lo stile. Questa flessibilità è utile per agenzie, team di prodotto e manutentori di codebase a lungo termine che hanno bisogno di coerenza senza rinunciare al controllo. Caratteristiche chiave includono set di regole configurabili basati su PSR e preset della comunità, correzione automatica del codice, output diff per rivedere le modifiche prima di commitare, supporto per cache per velocizzare esecuzioni ripetute e buona compatibilità con CI e hook Git.

    PHP-CS-Fixer è molto flessibile per convenzioni personalizzate del team, eccellente per automazione in pre-commit e CI, e ampiamente adottato con un forte supporto dell’ecosistema. Può sembrare opprimente se sei nuovo alle regole del formatter, e alcuni fixer rischiosi richiedono test attenti prima di un’adozione ampia. Il prezzo è semplice: PHP-CS-Fixer è gratuito e open source.

    Screenshot di pear.php.net

    2. PHP_CodeSniffer e phpcbf

    PHP_CodeSniffer, tipicamente noto come phpcs, è meglio conosciuto per rilevare violazioni degli standard di codifica. Il suo strumento gemello, phpcbf, può correggere automaticamente molte di queste violazioni. Insieme, formano un flusso di lavoro di enforcement degli standard solido per team attenti alla conformità e auditing.

    Questa coppia è particolarmente utile quando il tuo progetto deve segnalare problemi di stile così tanto quanto deve correggerli. In molte organizzazioni, phpcs funge da gatekeeper degli standard in CI, mentre phpcbf gestisce la pulizia automatica quando possibile. Se il tuo flusso di lavoro è fortemente orientato a standard di codifica e set di regole ufficiali, questa catena merita una valutazione seria. Capacità chiave includono convalida guidata da ruleset tramite configurazione XML, supporto per standard ufficiali come PSR-12, correzioni automatiche tramite phpcbf, integrazione editoriale e CI robusta, e reportistica dettagliata per team che vogliono visibilità sulle violazioni.

    phpcs è eccellente per enforcement e auditing, con reportistica chiara in ambienti di team e una buona idoneità CI. Le limitazioni sono che la copertura di auto-fix può essere più ristretta rispetto a PHP-CS-Fixer per alcune preferenze di stile, e la configurazione appare più orientata agli standard che al formatter. PHP_CodeSniffer è gratuito e open source.

    Screenshot di prettier.io

    3. Prettier Plugin PHP

    Prettier Plugin PHP porta la filosofia di Prettier nel PHP. Se il tuo progetto già usa Prettier per JavaScript, TypeScript, CSS, Markdown o JSON, aggiungere il formatting PHP tramite lo stesso flusso di lavoro incentrato sullo stile può essere attraente. Il suo punto di forza principale è la coerenza nei repositori eterogenei. I piccoli team di prodotto e i freelance full-stack spesso preferiscono un’unica mentalità di formattazione per l’intero stack anziché mantenere abitudini separate per frontend e backend. Le principali limitazioni sono che è meno specifico per PHP nella personalizzazione rispetto a PHP-CS-Fixer e potrebbe non allinearsi con ogni guida di stile PHP legacy. Prettier e il plugin PHP sono generalmente gratuiti e open source.

    Screenshot di friendsofphp.org

    4. Formattatore integrato PhpStorm

    Se il tuo team lavora principalmente all’interno di PhpStorm, il formatore integrato può essere sorprendentemente efficace. JetBrains offre controlli dettagliati del codice, supporto alle ispezioni e azioni di salvataggio che rendono la formattazione in tempo reale fluida. È una scelta solida per gli sviluppatori che vogliono un feedback immediato nell’editor e un’esperienza IDE rifinita. Tuttavia, fare affidamento solo sulla formattazione IDE può creare deriva se non tutti usano la stessa versione e impostazioni, quindi i team in genere affiancano PhpStorm con un formatore CLI in CI. L’IDE offre un’eccellente esperienza di editor, formattazione in tempo reale e impostazioni dettagliate, ma è meglio per team standardizzati su PhpStorm e richiede una disciplina di impostazioni condivise per evitare incoerenze. PhpStorm è un IDE commerciale a pagamento, anche se JetBrains offre prove e programmi di licensing.

    Screenshot di jetbrains.com

    5. formatter online PHP

    Gli strumenti di formattazione PHP online sono utili quando hai bisogno di una pulizia rapida, vuoi ispezionare l’output di stile o stai aiutando un cliente o uno sviluppatore junior a comprendere le modifiche di formattazione senza configurare un ambiente locale. Possono essere comodi per snippet singoli e sperimentazioni rapide, ma non sono la base migliore per flussi di lavoro professionali. Per repository di produzione, strumenti locali e integrati in CI sono molto più affidabili, perché vuoi configurazioni versionate, output riproducibile e controlli di privacy se il codice è proprietario o sensibile. Gli strumenti online sono veloci e facili per piccoli pezzi di codice, non richiedono installazione, e sono utili per esperimenti rapidi, ma spesso mancano di garanzie su privacy, version locking e disponibilità a lungo termine. I prezzi variano e molti strumenti online sono gratuiti con garanzie limitate.

    Confronto tra le opzioni più popolari di formatter PHP

    Per la maggior parte dei casi professionali, la decisione reale si riduce a PHP-CS-Fixer contro PHP_CodeSniffer/phpcbf, con Prettier Plugin PHP che entra in gioco quando il repository è fortemente eterogeneo. La differenza fondamentale è questa: PHP-CS-Fixer è di solito lo strumento di formattazione puro migliore, mentre phpcs + phpcbf è spesso lo strumento migliore per l’enforcement degli standard. Ciò non significa che uno sostituisca l’altro in ogni setup. Molti team eseguono la formattazione con un solo strumento e la validazione con un altro.

    StrumentoMigliore perForzaCompromesso
    PHP-CS-FixerTeam che desiderano formattazione flessibile e automatizzataRicca personalizzazione delle regole e forte auto-correzioneRichiede decisioni sulle regole e blocco delle versioni
    PHP_CodeSniffer + phpcbfTeam che applicano standard formali in CIFeedback robusto e controlli degli standardLa correzione può essere meno flessibile in alcuni casi
    Prettier Plugin PHPRepository misti JS/PHPFormattazione coerente cross-languagePersonalizzazione meno PHP-specifica
    PhpStorm FormatterFlussi di lavoro orientati all’IDEOttima esperienza locale di sviluppoNecessita backup CLI/CI per coerenza del team
    Online FormattersPulizia rapida di snippetConvenienza immediataNon adatto a flussi di lavoro seri del team

    Scegliere il formatore giusto per il tuo progetto

    Il miglior formatore PHP è quello che il tuo team userà effettivamente in modo coerente. Sembra ovvio, ma molti progetti scelgono uno strumento potente, non completano la configurazione o non lo integrano in Git e CI. Se sei uno sviluppatore in proprio o freelance, PHP-CS-Fixer è spesso la scelta predefinita più semplice perché è facile da automatizzare, si allinea bene a PSR-12 e ti offre margine di crescita. Se lavori in un team che già usa standard formali, PHP_CodeSniffer insieme a phpcbf potrebbe adattarsi meglio perché combina controllo e correzione in un flusso orientato alla conformità.

    Cosa considerare prima di scegliere: la dimensione del team influisce su quanto stringa e automatizzata debba essere la configurazione, le guide di stile esistenti contano perché cambiare convenzioni in un repo maturo può generare diff rumorosi, le esigenze CI sono rilevanti perché la formattazione locale da sola non garantisce coerenza, e la dimensione del repository è significativa poiché le prestazioni e la cache diventano più evidenti in grandi monorepos. Blocca le versioni del formatter in Composer o nel setup degli strumenti, aggiungi il file di configurazione al repository e testa le modifiche di formattazione prima di distribuirle ampiamente. Un formatter dovrebbe creare fiducia, non sorpresa.

    Procedura passo-passo: configurazione di PHP-CS-Fixer

    PHP-CS-Fixer è un buon punto di partenza perché gestisce bene sia i workflow di formattazione semplici sia quelli avanzati. La configurazione è semplice, e una volta in atto, la maggior parte dell’uso quotidiano diventa automatico.

    Installazione tramite Composer

    Se il tuo progetto usa Composer, installalo come dipendenza di sviluppo:

    composer require --dev friendsofphp/php-cs-fixer
    

    È anche possibile utilizzare la distribuzione PHAR se preferisci un binario standalone, ma Composer è di solito l’opzione più semplice per i team perché mantiene la versione bloccata nel progetto.

    Creare una configurazione di base

    Un file minimo .php-cs-fixer.php che usa PSR-12 potrebbe apparire così:

    <?php
    $finder = PhpCsFixerFinder::create()
        ->in(__DIR__ . '/src')
        ->in(__DIR__ . '/tests');
    return (new PhpCsFixerConfig())
        ->setRules([
            '@PSR12' => true,
        ])
        ->setFinder($finder);
    

    Se vuoi una configurazione leggermente più personalizzata, puoi estenderla:

    <?php
    $finder = PhpCsFixerFinder::create()
        ->in([__DIR__ . '/src', __DIR__ . '/tests'])
        ->exclude(['vendor', 'storage', 'cache']);
    return (new PhpCsFixerConfig())
        ->setRiskyAllowed(false)
        ->setRules([
            '@PSR12' => true,
            'array_syntax' => ['syntax' => 'short'],
            'ordered_imports' => true,
            'no_unused_imports' => true,
            'trailing_comma_in_multiline' => true,
        ])
        ->setFinder($finder);
    

    Questo ti fornisce una base pratica senza imporre troppe preferenze fin dall’inizio.

    Esegui localmente e rivedi le differenze

    Per correggere i file:

    vendor/bin/php-cs-fixer fix
    

    Per anteprimare le modifiche con maggiore visibilità:

    vendor/bin/php-cs-fixer fix --dry-run --diff
    

    Questa modalità di dry-run è preziosa in CI perché indica se il codice è conforme senza riscrivere i file nel pipeline.

    Aggiungere un hook pre-commit

    Un semplice hook Git pre-commit può impedire che PHP non formattato venga inserito nel repository:

    #!/bin/sh
    vendor/bin/php-cs-fixer fix --quiet
    git add .
    

    In un flusso di lavoro maturo, spesso si restringe l’ambito ai soli file PHP in stage, ma anche un hook di base può migliorare notevolmente la coerenza.

    Esempio GitHub Actions

    Per GitHub Actions, un semplice controllo di formattazione potrebbe apparire così:

    name: PHP Formatting
    on: [push, pull_request]
    jobs:
    ### php-cs-fixer:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - uses: shivammathur/setup-php@v2
    ### with:
              php-version: '8.2'
          - run: composer install --no-interaction --prefer-dist
          - run: vendor/bin/php-cs-fixer fix --dry-run --diff
    

    Esempio GitLab CI

    Per GitLab CI, l’equivalente è altrettanto diretto:

    php_cs_fixer:
      image: php:8.2
    ### script:
        - apt-get update && apt-get install -y git unzip
        - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
        - php composer-setup.php
        - php composer.phar install --no-interaction --prefer-dist
        - vendor/bin/php-cs-fixer fix --dry-run --diff
    

    Usa la cache se il tuo progetto è grande. Su repository di grandi dimensioni, questo può ridurre significativamente i tempi di esecuzione ripetuti.

    Screenshot di github.com

    Procedura passo-passo: utilizzare PHP_CodeSniffer e phpcbf

    Se PHP-CS-Fixer sembra formatter-first, PHP_CodeSniffer sembra standards-first. Non è una debolezza. In molte organizzazioni, è esattamente questo il punto.

    Installare ed eseguire controlli di base

    Installa con Composer:

    composer require --dev squizlabs/php_codesniffer
    

    Esegui un controllo PSR-12 di base:

    vendor/bin/phpcs --standard=PSR12 src tests
    

    Se le violazioni sono correggibili automaticamente, usa phpcbf:

    vendor/bin/phpcbf --standard=PSR12 src tests
    

    Creare un set di regole personalizzato

    Un semplice phpcs.xml o ruleset.xml ti offre un’implementazione ripetibile degli standard:

    <?xml version="1.0"?>
    <ruleset name="ProjectStandard">
        <description>Project coding standard</description>
        <rule ref="PSR12" />
        <exclude-pattern>vendor/*</exclude-pattern>
        <exclude-pattern>storage/*</exclude-pattern>
    </ruleset>
    

    Una volta che questo file esiste, di solito puoi eseguire phpcs senza dover ripetere l’intera definizione degli standard nel comando.

    Integrazione con editor e CI

    La maggior parte degli editor può richiamare phpcs direttamente, utile per feedback immediato. In CI, phpcs funziona bene come gate perché esce con stato non-zero quando vengono rilevate violazioni. Questo facilita l’impedire codice non formattato prima del merge. La principale limitazione da tenere a mente è che phpcbf non può correggere ogni violazione che phpcs può rilevare. Questa è una ragione per cui alcune squadre preferiscono PHP-CS-Fixer per la formattazione e phpcs per la reportistica.

    Integrazione editor e IDE: flussi di lavoro di formattazione in tempo reale

    La configurazione di formattazione migliore è quella che gli sviluppatori quasi non notano perché avviene automaticamente. È qui che l’integrazione dell’editor conta. Se la formattazione avviene solo in CI, gli sviluppatori si sentono interrotti. Se avviene nell’editor con la stessa configurazione utilizzata in CI, il processo risulta naturale.

    In PhpStorm, puoi configurare le regole di stile integrate del codice e integrare strumenti esterni come PHP-CS-Fixer o PHP_CodeSniffer. In VS Code, le estensioni comuni supportano phpcs, php-cs-fixer e anche Prettier Plugin PHP. Il dettaglio critico è la coerenza: il tuo editor dovrebbe usare lo stesso strumento, la stessa versione e la stessa configurazione di progetto dei tuoi ambienti CLI e CI.

    I conflitti di solito si verificano quando più strumenti cercano di formattare lo stesso file al salvataggio. Ad esempio, le impostazioni di stile di PhpStorm possono confliggere con PHP-CS-Fixer, o Prettier potrebbe riformattare i file dopo l’esecuzione di phpcbf. Se le azioni di salvataggio sembrano irregolari, scegli un formatore principale per tipo di file e disabilita il comportamento di formattazione su salvataggio sovrapposto.

    Best practices e convenzioni di team

    Un formatter funziona meglio quando diventa parte della cultura del team piuttosto che un utilità secondaria. Ciò significa includere il file di configurazione nel repository, bloccare le versioni degli strumenti e documentare il flusso di lavoro atteso nelle note di onboarding.

    Per progetti legacy, evita di cambiare l’intera base di codice dall’oggi al domani a meno che tu non pianifichi deliberatamente per questo. Un approccio più pulito è creare un commit di formattazione dedicato, unirlo rapidamente e chiedere al team di eseguire il rebase successivamente. Un’altra opzione è l’adozione incrementale, in cui solo i file toccati devono conformarsi al formatter. Entrambi gli approcci sono validi. La scelta giusta dipende dalla dimensione del repo, dal coordinamento del team e dalla pressione di rilascio.

    Mantieni la revisione del codice focalizzata sulla logica. Se il formatter sta facendo bene il suo lavoro, i revisori non dovrebbero spendere tempo a richiedere modifiche di spaziatura. Questo è il vero guadagno di produttività.

    Pitfalls comuni e come evitarli

    La maggiore lamentela su qualsiasi formatter PHP è il churn delle PR. Un piccolo ramo di funzionalità può improvvisamente mostrare centinaia di cambiamenti solo di formattazione, rendendo la revisione più difficile. La soluzione è disciplina di processo: esegui una singola passata di formattazione di base in una sua commit, poi mantieni separate le modifiche della funzionalità.

    Un altro problema comune è il conflitto tra strumenti. Se il formatter e il linter non sono d’accordo, la fiducia dei developer cala rapidamente. Allinea gli standard, riduci l’overlap quando possibile e testa l’intero flusso di lavoro prima di imporlo in CI.

    La performance può diventare un problema anche in repository grandi. Usa la cache, limita le esecuzioni ai file modificati nei hook locali e riserva la validazione dell’intero repository per CI o controlli pianificati. Se un auto-fix sembra cambiare il comportamento, fermati e verifica. La formattazione non dovrebbe modificare la logica, ma alcuni fixers avanzati o rischiosi possono avere effetti collaterali. Per questo i test dovrebbero essere eseguiti prima del merge.

    Riferimenti veloci: comandi, snippet di configurazione e modelli CI

    Ecco i comandi più utili da tenere a portata di mano nel lavoro quotidiano:

    AttivitàComando
    Esegui PHP-CS-Fixervendor/bin/php-cs-fixer fix
    Anteprima modifiche PHP-CS-Fixervendor/bin/php-cs-fixer fix --dry-run --diff
    Esegui phpcs con PSR-12vendor/bin/phpcs --standard=PSR12 src tests
    Auto-correzione con phpcbfvendor/bin/phpcbf --standard=PSR12 src tests

    Una configurazione pratica per molti team è semplice: usa PHP-CS-Fixer per la formattazione, opzionalmente usa phpcs per l’enforcement e la reportistica, collegali ai pre-commit hook e CI, e mantieni la configurazione versioned nel repository.

    Domande frequenti

    La formattazione cambia il comportamento del codice?

    Di solito no. Un formatore PHP adeguato è progettato per preservare il comportamento cambiando lo stile. Eppure, alcuni fixers avanzati possono essere più aggressivi, quindi è saggio eseguire i test dopo aver adottato nuove regole.

    Dovrei eseguire un formatter in CI o localmente?

    Entrambi. La formattazione locale offre feedback immediato agli sviluppatori. CI fornisce una barriera finale di coerenza al team. Usare entrambi previene sorprese.

    Come gestisco repository multilinguaggio?

    Se il tuo repository contiene PHP insieme a JavaScript, CSS, Markdown e JSON, una strategia divisa funziona bene. Usa un formatter dedicato per PHP e Prettier per gli asset frontend, oppure adotta Prettier Plugin PHP se la coerenza cross-language è più importante della personalizzazione PHP-specifica.

    E per i dibatti sul coding style?

    Questo è esattamente ciò per cui serve un formatter. Decidi una volta, configura lo strumento e passa all’esame dell’architettura, della correttezza e della manutenibilità.

    Risorse e riferimenti

    La documentazione ufficiale resta il posto migliore per verificare il supporto delle regole, i dettagli di installazione e la compatibilità delle sintassi attuali. Inizia con PHP-CS-Fixer su GitHub, PHP_CodeSniffer su GitHub, la documentazione di PhpStorm su jetbrains.com e Prettier su prettier.io.

    Se stai implementando un formatter per un team oggi, il passo successivo più efficace è semplice. Scegli uno strumento, effettua una configurazione di progetto, eseguilo su una piccola parte del codice e collegalo al tuo editor e CI. Una volta che tutto funziona senza intoppi, espandi l’ambito. Un formatter PHP affidabile non solo ripulisce il codice, ma ripulisce l’intero processo di sviluppo.