Una discusión que tuve con un colega hoy.¿Debería incluir bibliotecas de terceros que adopte en su proyecto?
Él dice que cada vez que utiliza una biblioteca de terceros, siempre debe escribir para ello un contenedor. Por lo tanto, siempre puede cambiar las cosas más tarde y acomodar las cosas para su uso específico.
no estoy de acuerdo con la palabra siempre, surgió la discusión con respecto a log4j y afirmó que log4j ha probado bien y la hora de la API y la aplicación probada, y todo lo imaginable puede ser configurado a posteriori y no hay nada que debe envolver. Incluso si quisiera envolver, existen contenedores probados como commons-logging y log5j.
Otro ejemplo que hemos tocado en nuestra discusión es Hibernate. Afirmé que tiene una API muy grande para envolver. Además, tiene una API en capas que le permite modificar su interior si así lo necesita. Mi amigo afirmó que todavía cree que debe ser envuelto, pero no lo hizo debido al tamaño de la API (este compañero de trabajo es mucho más veterano que yo en nuestro proyecto actual).
reclamé this, y que envoltorio se debe hacer en casos específicos:
- no está seguro de cómo la biblioteca se ajuste a sus necesidades
- va a utilizar sólo una pequeña porción de una libary (en en ese caso, solo puede exponer una parte de su API).
- no está seguro de la calidad de la API o la implementación de la biblioteca.
También sostuve que a veces puede envolver su código en lugar de la biblioteca. Por ejemplo, poner su código relacionado con la base de datos en una capa DAO, en lugar de colocar de forma preventiva todo el hibernate.
Bueno, al final esto no es realmente una pregunta, pero sus ideas, experiencias y opiniones son muy apreciadas.
+1 por tener problema con la palabra "siempre" – BryanD
vea SLF4J para el contenedor de log4j defacto. El appender que desea está siempre con otro registrador que el que usa :( –