Vendor Lock In - ce este, cum îl putem evita?

Cel mai banal prim lucru pe care il poti face e sa impachetezi acele instructiuni intr-o functie. Pe langa protejarea de vendor lock-in, ai alte cateva avantaje:

  • poti refolosi functia - daca o parametrizezi cum trebuie
  • numind functia cum trebuie, contribui la dezvoltarea si consolidarea acelui ubiquitous language (vezi DDD)
  • poti testa mai usor; nu am facut in javascript mai mult de smoked tests, dar intr-un alt limbaj e usor sa mock-uiesti acea functie si sa scrii teste subcutane - adica nu mai ai nevoie de DOM in cazul js
  • presiunea cognitiva scade, pentru ca iti e mult mai usor sa te gandesti la “numeFunctieDeBusinessAici”, decat la o anumita secventa de instructiuni; creierul uman e bestial de bun la abstractizari si generalizari, foloseste-i la maxim aceasta capacitate

Bineinteles, elegant este sa creezi un intreg anticorruption layer pentru aceste lucruri, nu functii izolate. Deci clase si metode denumite dupa termeni din UL.

Cu un intreg layer, presiunea cognitiva scade si mai mult. E o placere cand stai cu clientul in fata monitorului si in fata ta incape tot codul relevant problemei despre care discutati, iar clientul intelege perfect tot ce exprima acel cod deoarece folositi acelasi limbaj - chiar daca nu e programator.

Nu sunt cine stie ce pasi mareti pe care trebuie sa ii faci. Sunt pasi mici dar constanti pe care ii poate face oricine incepe un proiect de la zero.

Nu spune nimeni sa fugi de vendor ca de dracu’. jQuery e o librarie buna, ofera productivitate. Dar nu costa nimic sa adaugi o mica protectie acolo, plus ca iti aduce beneficiile pe care le-am enumerat mai sus - deci chiar si facand abstractie de vendor lock-in, tot e ceva ce ar trebui sa faci.

Cand zic

ma refer chiar la cel mai marunt lucru pe care il poate face oricine.

Exista alte strategii mai complexe, dar e un amestec de business logic cu arhitectura si cu stereotipurile limbajului in care programezi. Unele sunt marunte, si despre ele putem vorbi cu usurinta la scara redusa, in exemple sintetice, altele nu le poti deslusi decat cu exemple concrete de business, exemple care sunt complexe, deci nu putem vorbi despre ele intr-un forum.

1 Like