Principis SOLID en el desenvolupament de mòduls Drupal

Principios SOLID para Drupal

Crear un mòdul en Drupal 10 o 11 part de definir una estructura clara: un directori el teu_modulo / amb arxius com tu_modulo.info.yml, el teu_modulo.routing.yml i classes en src/. Primer identifiques la funcionalitat que vols afegir (per exemple, un formulari personalitzat o un servei d’integració amb una API), i després organitzes la teva lògica en controladors, serveis i plugins. Gràcies al sistema d’injecció de dependències de Drupal (que utilitza Symfony sota el capó), pots separar responsabilitats i reutilitzar codi. No obstant això, per a escalar adequadament i evitar “codi espagueti”, convé aplicar un conjunt de bones pràctiques de disseny: els principis SOLID.

Què sén els principis SOLID?

SOLID és un acrònim que resumeix cinc regles fonamentals del disseny orientat a objectes. Cada lletra correspon a un principi que facilita la llegibilitat, mantenibilidad i extensibilitat del codi.

Principis SOLID

S – Single Responsibility Principle (SRP)

Principi de Responsabilitat Única: cada classe o mòdul ha de tenir una única raó per a canviar. Si un servei gestiona tant l’enviament de correus com la validació de formularis, viola el principi de SRP.

O – Open/Closed Principle (OCP)

Principi d’Obert/Tancat: les entitats de programari (classes, mòduls, funcions) han d’estar obertes a l’extensió però tancades a la modificació. Afegir funcionalitat no ha d’implicar alterar el codi existent.

L – Liskov Substitution Principle (LSP)

Principi de Substitució de Liskov: els objectes d’una classe derivada han de poder substituir als de la seva classe base sense alterar el comportament del programa. És a dir, heretar sense trencar contractes.

I – Interface Segregation Principle (ISP)

Principi de Segregació d’Interfícies: és millor tenir diverses interfícies específiques que una interfície general massa gran. Cada client ha d’implementar només els mètodes que realment utilitza.

D – Dependency Inversion Principle (DIP)

Principi d’Inversió de Dependències: les classes d’alt nivell no han de dependre de classes de baix nivell, sinó d’abstraccions (interfícies). Injectar dependències en lloc de instanciarlas directament.

Aplicant SOLID en mòduls de Drupal

  • SRP en serveis Drupal: crea serveis dedicats en your_moduli.services.yml, com MailSender per a correus i DataValidator per a regles de negoci. Cadascun només implementa una responsabilitat.
  • OCP amb tags i plugins: defineix una interfície ContentFormatterInterface i registra implementacions com plugins o serveis etiquetats. Així, en afegir un nou formateador, no toques el mòdul basi, només crees una classe nova que implementi la interfície.
  • LSP en extensions de plugins: si estens el plugin de camp FormatterBase, respecta el mètode view() i la signatura de retorn. No canviïs paràmetres ni llancis excepcions inesperades, per a garantir que Drupal pugui substituir la teva formateador sense errors.
  • ISP per a definicions d’interfície: separa contractes en DataLoaderInterface, DataSaverInterface i DataDeleterInterface. Un servei d’importació de CSV implementa només DataLoaderInterface, sense veure’s forçat a incloure mètodes de guardat o esborrament.
  • DIP mitjançant injecció de dependències: en lloc de cridar \Drupal::database() dins de la teva classe, defineix un servei DatabaseClientInterface que implementi la connexió a la base de dades. Després, en el constructor del teu servei, rep DatabaseClientInterface $db. En entorns de proves, pots injectar un codi temporal sense tocar la lògica real.

SOLID com a inversió valuosa

Incorporar SOLID en el desenvolupament de mòduls Drupal 10 o 11 impulsa un codi més net i robust. Gràcies a SRP, OCP, LSP, ISP i DIP, redueixes acoblaments, facilites tests automatitzats i agilitzes la incorporació de noves funcionalitats. Encara que suposa una mica més de disseny a l’inici, l’estalvi en manteniment i la millora en col·laboració fan de SOLID una inversió imprescindible per a qualsevol equip, ja sigui una gran agència o una pyme de 10 treballadors.

Serveis relacionats

Disseny web

Els nostres dissenyadors creen webs intuïtives i personalitzades, que…

Màrqueting Digital

Desenvolupem plans personalitzats per a aconseguir una presència en…

Consultoria TIC

El nostre equip és expert en consultoria Tic des…

Deixa un comentari