As vrea sa incep prin a preciza ca urmeaza sa imi exprim parerea dintr-un punct de vedere personal, deci si prin urmare astept cu nerabdare sa imi demonstrati contrariul!
Plecand de la premisa ca in lumea de azi se tinde cat mai mult catre abstractizare si concepte cat mai generale, as vrea sa discutam putin despre aplicarea abstractizarilor in domeniul ‘programarii’ / developmentului de toate felurile.
In primul rand trebuie definit tipul de abstractizari despre care discutam, spre exemplu un sistem de operare (Windows, Unix-based, Mac-OS, etc.) reprezinta un layer de abstractizare de care am nevoie pentru a-mi indeplini activitatea zilnica, pe care nu vreau ( in cazul de fata ) sa il patrund in profunzime sau sa il modific in vr-un fel. Pe de alta parte sa luam ca exemplu o clasa in PHP care face interfata cu baza de date, la o astfel de abstractizare ma refer.
Desigur ca exemplul este banal dar ilustreaza destul de bine ce vreau sa spun. Sa ziceam ca te-ai saturat sa scrii toata ziua query-uri de genul:
-
SELECT * FROM `tabel` WHERE 1
Te gandesti ca toate frameworkurile au un handler pentru request-urile catre baza de date asa ca iti scrii o clasa care sa se ocupe cu asta. Avantajele sunt evidente pana la un punct, usureaza operatiile uzuale, query-urile devin independente de serverul SQL folosit, etc.
Dupa care presupunem ca prietenul tau, Noob Guy, vrea sa foloseasca si el clasa ta pentru ca nu se descurca atat de bine cu sintaxa de SQL si ii este mai usor asa. Acum vine partea interesanta si concluzia la care vroiam sa ajung.
Pe de o parte abstractizarile sunt peste tot in jurul nostru si ne fac viata mai usoara, dar in anumite situatii nu e intelept sa te bazezi doar pe ele. Tu stii cum sa iti modifici metodele pentru a putea face ce ai nevoie dar prietenul tau Noob Guy trebuie sa invete mai intai sintaxa corespunzatoare, atat de SQL cat si de PHP ca sa poata modifica ceva in cunostinta de cauza.
Si aici este cheia, nu e rau sa iti usurezi munca atata timp cat intelegi exact cum functioneaza straturile de sub abstractizare, care sunt limitele impuse de aceasta, etc. E genial sa poti folosi unelte ca jQuery (de care vorbeam mai devreme ) sau un framework PHP precum CakePHP, atata timp cat stii JS si PHP ca sa poti intelege ce si cum se petrece, macar in mare.