Cel mai important skill pe care un programator ar trebui sa il aiba este acela de a scrie cod pe care orice al programator il poate citi usor. Adevarul e insa mult mai rau: doar 20% din programatori fac asta. Si eu inca am muuult de lucrat aici, dar sunt pe traiectoria buna (zic eu).
„Orice om poate sa scrie cod pe care un calculator il intelege. Programatorii buni scriu cod pe care il inteleg oamenii” – Martin Fowler
Cand am inceput sa ma interesez despre codul curat si citibil, mi-am dat seama ca proiectele incep sa fie
- mai usoare de intretinut
- mai usoare de facut refactoring
- refolosibile
- consistente
Cartea
Cartea lui Robert Martin numita „Clean Code: A Handbook of Agile Software Craftsmanship” este cartea care trebuie citita de orice programator care vrea sa scrie cod curat. Cartea vorbeste despre cod, comportamente, teste automate si asa mai departe.
Sa va dau un exemplu practic
Unul din capitolele din carte vorbeste despre numirea lucrurilor in cod in mod corect. In povestea aceasta, tu vei fi cel care citeste codul. Hai sa ne uitam la o functie:
<?php function calc($n1, $n2) { return $n1 / $n2; }
Crezi ca numele calc este ales bine pentru functia asta? Cartea te-ar invata ca nu, nu este un nume bun. De ce?
- Calc este o prescurtare: nu folosi prescurtari!
- Functiile fac ceva. Trebuie sa fie numite cu un verb.
- Chiar daca as redenumi functia din „calc” sa fie „calculate”, tot ar fi destul de vaga. Trebuie sa imbunatatim semantic functia si sa ii dam mai mult sens.
Functia imparte (divide) doua numere. Deci „divide” este un nume bun de exemplu.
<?php function divide($n1, $n2) { return $n1 / $n2; } $rezultat = divide(1,2);
Inca avem probleme cu functia. „n1” si „n2”, parametrii functiei, nu sunt semantici. Cum ar fi sa ii numim dividend si divizor? De asemenea, hai sa redenumim variabila „result” in altceva, cum ar fi „cat” (in engleza se numeste quotient).
<?php function divide($dividend, $divisior) { return $dividend / $divisior; } $quotient = divide(1,2);
Functia este acum mult mai semantica.
Daca inca nu te-am convins sa citesti cartea, arunca o privire la imaginea de mai jos, apoi cumpara de aici cartea (exista si versiune digitala).
Articol tradus si adaptat de aici.
Am cartea in biblioteca de la serviciu 🙂