Pentru cei ce nu știu ce este un framework, cea mai bună definiție pe care am găsit-o e aceasta: “A software framework is a platform where common code with generic functionality can be selectively specialized or overridden by developers.”  Ca exemplu, gândește-te la un cod ce validează un CNP (cod numeric personal). Dacă scrii o funcție care face asta și trebuie să o folosești în 3 proiecte diferite, nu o să o scrii de 3 ori, nu? O scrii o dată, apoi o folosești în toate proiectele. Așa e și cu framework-ul, doar că codul respectiv nu e scris de tine. Dacă codul deja există, chiar scris de altcineva, nu e redundant să îl scrii și tu din nou?

 

Urmărind forum-urile de discuții între programatori observ o tendință oarecum îngrijorătoare: liceeni sau studenți ce vor să învețe programare folosind framework-uri. Exemplu: li se cere să deseneze un cerc, iar ei folosesc un framework ce conține o librărie ce poate desena un cerc dintr-o singură linie de cod. De asemenea, mai văd unii programatori, considerați seniori, ce preferă să scrie cod de la zero în loc să folosească un framework  pentru că “n-am încredere în codul scris de alții și prefer să am control 100% asupra a ce fac“.

 

Orice discuție legată de folosirea sau nu a unui framework, trebuie să pornească de la scopul proiectului la care se lucrează. Există doar două variante aici: proiectul are scop didactic sau scop de business.

Dacă proiectul la care lucrezi este unul de business, de producție, făcut pentru a produce bani/valoare, în 99% din cazuri este justificată folosirea unui framework.

Ce avantaje îți aduce folosirea unui framework în producție:

  1. Termini proiectul mai rapid – Folosind un framework dezvolți proiectul mult mai repede decât ai face-o scriind cod de la zero. Pentru că codul de care ai nevoie este deja scris, iar tu trebuie doar să-l ajustezi și să-l utilizezi.
  2. Codul este deja testat – Codul pe care îl scrii de la zero e testat doar de tine. Majoritatea framework-urilor au fost testate de sute, mii, zeci de mii de oameni. Și au fost folosite deja în la fel de multe proiecte și configurații. Ce îți rămâne ție de testat este doar implementarea framework-ului în proiectul tău.
  3. Folosești “best practices” – Oricât de bun programator ai fi, e posibil să nu utilizezi toate “best practice”-urile recomandate. Utilizarea unui framework bun îți garantează că ești la zi cu toate recomandările. Iar citirea codului unui framework bun oferă și unui programator senior multe șanse de învățare.
  4. Standardizare – Așa cum am discutat și aici, un proiect bun este cel ce poate fi menținut și modificat cu ușurință de un programator ce nu a participat la crearea lui. Având în vedere că framework-urile sunt standardizate și utilizate pe scară largă, dacă pleci dintr-o companie iar un alt programator îți preia sarcinile, îi va veni mult mai ușor să îți continue munca.
  5. Optimizare – Framework-urile sunt optimizate pentru a-și face cu succes treaba pentru care au fost gândite. Să luăm WordPress ca exemplu. O platformă ce există de 14 ani, la care au lucrat sute de oameni, gândită să facă în mod ideal un singur lucru pentru tine: content management. Dacă un framework este suficient de bun pentru 75 de milioane de site-uri din lume, probabil este suficient de bun și pentru tine.
  6. Ușor de făcut update – Dacă este necesară o modificare în proiect, îți va veni mult mai ușor să o faci. Să luam exemplul de mai sus, cu CNP-ul. Dacă se schimbă ceva în procedura de validare a CNP-ului, singurul tău efort va fi de a face un update al versiunii de framework pe care o folosești pentru validare.

 

Deși avantajele sunt majore, totuși folosirea unui framework vine cu o condiție esențială: acesta trebuie cunoscut foarte bine de programatorul ce îl va utiliza. De exemplu, din cauza abstractizării, multe framework-uri mari  vin cu mult mai multe funcționalități decât ai nevoie. Dacă nu ești familiarizat cu framework-ul respectiv, e posibil să consumi mult timp și multe resurse pentru a folosi eficient doar ceea ce ai nevoie.

De reținut că nu există nicio companie, indiferent de nivelul ei, în care să se scrie în totalitate cod de la zero. Companiile, dacă nu folosesc un framework comercial, au un framework dezvoltat intern, sau măcar o metodă de abstractizare și modularizare care să permită programatorilor să scrie cod mai rapid.

 

Spuneam că totuși folosirea unui framework este condiționată de scopul proiectului. În cazul în care scopul tău este să înveți programare, este bine să eviți cât poți de tare framework-urile și să scrii cod de la zero. Sunt două motive principale pentru asta :

  1. Vrei să inveți să programezi pas cu pas, treaptă cu treaptă. Doar așa te asiguri că cunoștințele tale sunt temeinice. Utilizând framework-uri în această etapă, arzi niște pași care sunt chiar la baza pregătirii tale ca programator. Vei ajunge să regreți mai târziu.
  2. Framework-urile conțin cod scris de programatori cu mulți ani de experiență în spate. Chiar dacă crezi că vei învăța să programezi citind codul framework-ului (dacă ai acces la el), te înșeli. Pur și simplu diferența de nivel între tine și cel ce a scris codul este mult prea mare.

 

Cum să aplic asta?

Dacă scopul tău este să înveți programare, scrie cod de la zero. Dacă scopul tău este să dezvolți un proiect de business, înțelege bine ce face un framework și cum o face, apoi implementează proiectul tău folosindu-te de el.

 


Ți-a plăcut articolul? Dacă ești programator și lucrezi într-o companie, dă-ne o mână de ajutor. Recomandă-le colegilor de la HR să folosească platforma Echoz. Be a generous god! Vezi aici detalii despre ce putem face pentru ei.


 

Framework VS cod scris de la zero

2 thoughts on “Framework VS cod scris de la zero

  • October 11, 2017 at 14:48
    Permalink

    Încăpățânarea de a nu folosi un framework – oricare ar fi ăla – este definiția NIH (not invented here). Dar, pe de altă parte, utilizarea unui framework înseamnă, de cele mai multe ori, și vendor lock in (care, în funcție de proiect, poate fi sau nu o problemă).

    Pe DevForum s-a discutat și răsdiscutat dacă un framework este sau nu bun, concluzia generală fiind… depinde 😀

    Reply
    • October 11, 2017 at 14:59
      Permalink

      Există framework și pentru “anti vendor lock”. Frameworkception 🙂

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *