Mantenlo simple: divide la gema

Como dije en publicaciones anteriores, me gusta colocar m贸dulos de c贸digo en cajas que puedo separar de la base de c贸digo principal.

Sirve para muchos prop贸sitos, incluida la capacidad de abrir la biblioteca para ayudar a otros.

Suele empezar poco a poco con un par de m贸dulos. En alg煤n momento terminas cosas m谩s complejas de la misma manera. Y algunas veces te enfrentas a algo un poco m谩s complejo: quieres abstraer una capa de diferentes proveedores de servicios de tu base de c贸digo principal.

Hay muchos servicios similares, pero es bastante raro que expongan una API similar p煤blicamente. Y nos complica las cosas. Fog, por ejemplo, es un gran ejemplo de abstracci贸n sobre muchos proveedores de plataformas diferentes.

Mientras escrib铆a una de esas gemas, me enfrent茅 a un problema: 驴c贸mo cargar solo el c贸digo que necesito para el proveedor X y no cargar el c贸digo utilizado para el proveedor Y?

En muchos casos, cuando se hace esa pregunta, debe hacerse a un lado y verificar si no se est谩 perdiendo un punto muy obvio.

En este caso, la parte obvia fue: dividir la gema en una gema central y subgemas espec铆ficas del proveedor. La aplicaci贸n requerir谩 la gema secundaria espec铆fica del proveedor que, a su vez, requerir谩 la gema principal. Las especificaciones son mucho m谩s limpias para cada gema, el c贸digo tambi茅n es mucho m谩s simple. Y una ventaja adicional: toda la familia es m谩s f谩cil de ampliar.

No es necesario realizar pruebas complejas, todo es bastante simple y todo el mundo est谩 sonriendo.