Proiect de conștientizare tehnică

MANIFESTUL ÎMPOTRIVA PARAMETRILOR DE TIP BOOLEAN

De ce valorile "true" și "false" aruncate la întâmplare în apelurile tale de metode îți sabotează designul software.

Către toți dezvoltatorii obosiți de codul greu de înțeles, de bug-urile neprevăzute și de orele pierdute descifrând intențiile altora:

Ne-am săturat să deschidem fișiere de cod și să fim întâmpinați de apeluri de metode complet oarbe. Când citești cod scris de alții (sau chiar de tine, acum o lună), acest gen de instrucțiune este o barieră cognitivă:

Exemplu de Apel Criptic (Bad Smell)
utilizator.actualizeazaStare(dateUtilizator, true, false);

Ce reprezintă acel true? Dar acel false? Fără a naviga în interiorul implementării metodei, ești complet blocat. Acest design trădează regula numărul unu din software engineering: Codul trebuie să fie ușor de citit la locul de utilizare.

Ocultează Intenția

Un simplu „true” într-un apel este anonim. Te obligă să îți fragmentezi atenția ca să înțelegi ce comportament dictează.

Încalcă SRP

Dacă o metodă își schimbă complet logica internă în funcție de un flag primit, înseamnă că face **două lucruri distincte**.

Evoluție Rigidă

Când apare a treia stare de rulare, ești tentat să adaugi un alt boolean, creând monștri de genul: `proceseaza(true, false, true)`.

Soluțiile: Cum procedăm corect?

Avem la dispoziție tehnici elegante de refactorizare recomandate de standardele Clean Code de pretutindeni.

Metoda 1 Creează Metode Explicite (Recomandat)

Dacă flag-ul controlează execuția globală, desparte metoda respectivă în două implementări dedicate și clare.

❌ Așa NU: serviciu.comanda(date, true); // Ce înseamnă true?
✅ Așa DA: serviciu.comandaUrgenta(date); // Intenția este auto-documentată.
Metoda 2 Folosește Enum-uri Descributive

Când vrei să transmiți o opțiune sau o stare, înlocuiește bitul anonim de tip boolean cu o structură explicită de tip Enum.

❌ Așa NU: raport.genereaza("buget", false); // Ce înseamnă false? Fără CSV? Sau XLS?
✅ Așa DA: raport.genereaza("buget", Format.EXCEL); // Oricine citește înțelege instantaneu.

Laborator Interactiv: Refactorează Acum!

Scor Clean Code: 40%

Apasă pe opțiunea optimă de mai jos pentru a repara această metodă dăunătoare dintr-un serviciu fictiv de notificări.

Clasă: ServiciuNotificari.java Complexitate Ridicată
public void trimiteNotificare(Utilizator u, String msg, boolean emailOnly) {
    if (emailOnly) {
        // Trimite doar e-mail
        serviciuEmail.trimite(u.getEmail(), msg);
    } else {
        // Trimite e-mail și SMS
        serviciuEmail.trimite(u.getEmail(), msg);
        serviciuSms.trimite(u.getTelefon(), msg);
    }
}

Alegerea îți aparține la următorul commit

Fiecare linie de cod este o carte de vizită a profesionalismului tău. Spune nu argumentelor magice de tip `true` și `false`.