In gimnaziu, olimpic la matematica fiind, profesorul meu de matematica, Eugen Guias, caruia ii datorez o buna parte din ce am in cap zilele astea (omul care m-a incurajat si sustinut sa particip la prima olimpiada nationala de matematica, in clasa a VI-a, care “mi-a deschis apetitul” asa ca am participat la toate nationalele de mate posibile pana la terminarea liceului), de cate ori rezolvam o problema folosind teoreme prea “puternice” imi spunea sa nu trag cu tunul dupa muste. Pe undeva un fel de Occam’s Razor.

In zilele noastre, ca programator, ajung sa preiau diverse proiecte facute si lasate asa de altii. Bun, stiu ca niciunui programator nu ii place sa lucreze dupa altul, dar uneori ai comment-uri care te ajuta.

Problema reala e alta. Si anume, de ce nu ai scrie un <? include (“header.php”);?> si ai prefera sa faci un header care e generat de o functie dintr-o clasa extinsa prin alta clasa? Dupa care sa zici $header->show();?????

Date suplimentare: template-ul nu e unic, ci exista vreo 15 variante de template; in capul meu, faci o functie, o clasa pentru unitate, pentru generalizare, pentru a evita o diversitate necontrolabila. Daca ai 15 tpl-uri, ce salvezi intr-o parte pierzi in alta.

Asa ca nu inteleg rolul claselor – nu era mai simplu sa ia headerul cu include?

Efectele sunt si ele destul de usor de inteles: atunci cand sapi in diverse clase, extinse prin alte clase,  pentru a gasi functii care genereaza un output pe baza unui template, pierzi muuuuult mai mult timp facturabil catre client decat daca ai avea un include banal. Asta fiind valabil si pentru individul care a scris codul.

Cum nu duc lipsa de clienti si cum timpul total este acelasi, eu nu castig nimic, in schimb clientul pierde bani pentru coduri complicate in mod inutil. Ceea ce imi face clientul nefericit. Iar eu sunt mai fericit cand si clientul meu este fericit – iar motivatia e simpla si nu tine de morala (de fapt nu poti construi argumentatii pornind de la morala…): un client fericit inseamna recomandari, adica alti clienti si alti bani, pana la urma.

Asa ca nu ar fi mai bine sa “keep iti simple”? Sa nu tragem cu tunul dupa muste? Si sa le permitem celor care vin dupa noi sa ne ajusteze codul sa o faca mai usor? Iar asta nu de dragul nostru, ci de dragul clientilor nostri si a industriei in general. Pentru ca daca toti ceilalti o vor duce bine, noi vom beneficia implicit.

Advertisements