Setmana de festes, torrons i menjar. Així és la setmana de Nadal, on després d’un bon dinar de Nadal, es continua amb Sant Esteve per si quedava algun forat. Són dies màgics per a la mainada, sobretot pel cagatió, una tradició que m’encanta. No hi pot haver res més nostrat que picar una bona soca i que “cagui” regals. També he quedat amb el fotògraf de la Llera del Ter per fer fotos per l’article del meu poble. Ja queda poc perquè surti la revista, i tinc ganes de veure el resultat final.
A la feina, ha estat una setmana força tranquil·la, tancant entrevistes amb dues persones i amb una altra que vindrà a fer pràctiques de la Universitat de Girona. En algun número t’explicaré quina és la filosofia que seguim per anar ampliant el nostre equip.
Començo amb algunes recomanacions,
💾 Programari
Pik és una eina de consola per matar processos ☠️ de forma interactiva. Pots buscar per nom de procés, ruta, arguments o fins i tot per ports oberts. És molt pràctica i, si treballes sovint des de la terminal, segur que la trobaràs útil.
🤔 Curiositats
Coffe-o-clock una aplicació escrita amb Python que respon la pregunta eterna: Hauria de fer un altre cafè?
📦 Recursos
He llegit un article de Fastmail que explica per què fan servir el seu propi hardware i quins avantatges els dona, tant econòmicament com pel control total que obtenen. No és una solució per a tothom, però sempre està bé veure altres perspectives i maneres de treballar.
🌟 El concepte
Al número anterior vaig parlar de la I de SOLID, el principi de segregació d’interfícies, que ens ensenya a dissenyar interfícies més específiques i adaptades a les necessitats dels seus usuaris. Aquesta setmana tanco el cicle amb la D, el Principi d’Inversió de Dependència (Dependency Inversion Principle), que és necessari per mantenir el codi flexible i desacoblat dels detalls tècnics.
Aquest principi estableix que els mòduls d’alt nivell, aquells que encapsulen la lògica principal de l’aplicació, no haurien de dependre directament dels mòduls de baix nivell, com bases de dades, API concretes o altres serveis. Tots dos han de dependre d’abstraccions. També diu que les abstraccions no haurien de dependre dels detalls, sinó que són els detalls els que han de dependre de les abstraccions. Això garanteix que les decisions tècniques específiques no afectin la lògica central del programa.
Per entendre-ho millor, imagina un sistema de notificacions. Si el codi principal està connectat directament amb un servei concret, com ara l’enviament de correus electrònics, qualsevol canvi o problema en aquest servei requerirà modificar aquest codi. Ara bé, si en comptes d’això es defineix una interfície genèrica, com ara NotificacioService
, que permet enviar missatges independentment del canal utilitzat, es poden implementar diverses versions: una per correu, una per SMS i una altra per notificacions push. El mòdul principal només interactua amb aquesta interfície, mantenint-se aliè als detalls concrets de cada canal.
Això s’aconsegueix mitjançant l’ús de la injecció de dependències, un mecanisme que permet proporcionar al codi principal la implementació concreta de l’abstracció que necessita, sense que aquest hagi de conèixer directament quina és. Això fa que el sistema sigui molt més flexible, ja que es poden substituir o modificar implementacions sense tocar el codi que les utilitza.
Nota: He posat enllaços amb el codi per poder-ho visualitzar millor que dins el propi contingut de l’article.
Per fer-ho més clar, aquí tens un exemple de codi. Primer, sense aplicar el principi
Aquí, si es vol canviar a un altre canal, com els SMS, caldria modificar directament el codi del gestor, trencant la seva independència. Per solucionar-ho, s’aplica el Principi d’Inversió de Dependència.
Amb aquesta estructura, es pot canviar fàcilment el canal de notificació només substituint la implementació passada al constructor.
Aplicar aquest principi facilita molt l’evolució del codi, redueix la complexitat i permet tenir una estructura modular i fàcilment testejable. Amb això tanco el cicle SOLID, esperant que aquests conceptes t’hagin ajudat a entendre com escriure un codi més net i robust. 🚀
💖 Feedback
Si t’ha agradat i em vols ajudar, fes arribar aquest contingut a qui creguis que li pot interessar, i entra al canal de Telegram per comentar la publicació.