“Abstracción” solo significa “ocultar detalles”.
Por ejemplo, algo como una API JSON se puede llamar una capa de abstracción: hay un código complejo debajo, con cientos de clases, métodos y otras cosas, pero el código del cliente no necesita ser consciente de eso; puede hacer todo lo que quiera a través de un par de puntos finales pequeños y simples. O, por ejemplo, podría tener una capa entre la base de datos y su código de back-end real que valida las reglas comerciales o similares (esta capa a menudo puede estar dentro de la base de datos, en forma de procedimientos almacenados).
Mientras estamos en eso, “abstracción con fugas” significa una abstracción que intenta ocultar la complejidad debajo, pero falla (“filtra” la complejidad): para extender el ejemplo anterior de la API JSON, los puntos finales son pequeños y simples, pero debido a cómo está organizado el código debajo, puede importar en qué orden los llame, y llamarlos en el orden incorrecto podría producir resultados impredecibles o algo así.
- ¿Cómo es mi sitio web www.gstmadeeasy.com?
- ¿Cuáles son algunos productos que se crean sobre MySQL y qué valor aportan que no se pueda obtener solo con MySQL?
- ¿Cuál es la mejor manera de instalar un tema de WordPress en un servidor local?
- ¿Cuál es la mejor manera de enviar correos electrónicos masivos sin ser bloqueado por los servidores de destino?
- En diseño web, ¿qué significa el término 'apilar'?
La forma de combatir las abstracciones con fugas es llegar al borde del trastorno de personalidad dividida 🙂 Debe intentar fingir que no sabe absolutamente nada sobre los detalles internos y tratar de pensar en términos de la abstracción presentada a la capa superior (p. Ej. al código del cliente): si no sabía nada, ¿con qué puntos finales podría tratar de contactar? ¿Qué parámetros sin sentido podrías tratar de darles? Si hay algo que obtienes de uno y tienes que enviar a otro, ¿qué pasaría si pensaras que puedes cambiarlo antes de enviarlo? En otras palabras, solo trata de actuar como un newb completo y ve si puedes romper la abstracción. Luego agregue cheques y mensajes de error útiles para todos los abusos que pueda pensar.
En general, el propósito del ejercicio es permitirle trabajar en diferentes componentes por separado, sin tener que recordar cómo funcionan los otros componentes. Esta es la única forma viable de desarrollar grandes aplicaciones; incluso las personas más inteligentes tienen límites, y esos límites son muy fáciles de alcanzar con código mal diseñado (“mal diseñado”, entre otras cosas, significa “malas abstracciones”).