Mondi su mondi, sistemi di sistemi.

Contro i frameworks?

Se dò una scorsa ai libri sugli scaf­fali ne trovo diversi che par­lano dei fra­meworks e delle loro virtù, a par­tire dal vene­ra­bile Design pat­terns. Cito:

The fra­mework dic­ta­tes the archi­tec­ture of your appli­ca­tion. It will define the ove­rall struc­ture, its par­ti­tio­ning into clas­ses and objects, the key respon­si­bi­li­ties the­reof, how the clas­ses and object col­la­bo­rate, and the thread of con­trol. A fra­mework pre­de­fi­nes these design para­me­ters so that you, […], can con­cen­trate on the spe­ci­fics of your application.

[…]

Reuse on this level leads to an inver­sion of con­trol bet­ween the appli­ca­tion and the soft­ware on which it’s based.

D’altra parte, come forse ricor­dano quelli che si sono dati la pena di leg­gere i miei pen­sieri sul map­ping OR, sanno che non li ho più in gran simpatia.

Frameworks vs librerie

Il motivo fon­da­men­tale è che c’è una ten­sione irri­du­ci­bile fra il riu­ti­lizzo (di codice, di impo­sta­zioni, di pat­terns) pro­mosso da un fra­mework e la rela­zione inversa fra esten­sione del codice e riutilizzabilità.

Più il fra­mework è esteso meno è effi­ciente, dove, in que­sto con­te­sto, l’efficienza è data dalla esten­sione rispetto alla por­zione real­mente utilizzata.

Inoltre – e soprat­tutto – un fra­mework nasce con la pre­messa che l’inversione di con­trollo 1 sia una buona cosa. Ma è poi vero?

Se siamo incerti sul da farsi un fra­mework risulta pre­zioso per­ché, in un certo senso, non pos­siamo sba­gliare, appunto gra­zie all’inversione di con­trollo che det­terà a grandi linee i punti in cui inse­rirci. Viceversa, una libre­ria “nor­male” funge da sem­plice depo­sito di codice che viene chia­mato dall’applicazione, nei modi e nei tempi rite­nuti opportuni.

Quando e come con­viene usare un framework?

A mio parere, un fra­mework risulta van­tag­gioso con un pro­getto nuovo, dove è impor­tante riu­scire ad arri­vare ad un risul­tato nel minor tempo pos­si­bile ma, ideal­mente, sarebbe da con­si­de­rare come un’impalcatura che verrà smon­tata quando non è più necessaria.

Più facile a dirsi che a farsi, certo, ma non è raro che dopo una prima release un’applicazione venga riscritta senza i fra­mework usati in pre­ce­denza, spesso per ragioni di prestazioni.

  1. cito ancora:

    Reuse on this level leads to an inver­sion of con­trol bet­ween the appli­ca­tion and the soft­ware on which it’s based. When you use a tool­kit, you write the main body of the appli­ca­tion and call the code you want to reuse. When you use a fra­mework, you reuse the main body and write the code it calls.

Per proseguire

Commenti e trackback sono disabilitati.