2010-10-26 10 views
7

Tengo una pequeña biblioteca de utilidades que contiene algunos métodos de utilidad útiles que han sido probados por completo. Por el momento, mi biblioteca no tiene dependencias externas. Estoy jugando con la idea de agregar el registro a mis clases que podría ser útil para la depuración. Pero esto significaría agrupar bibliotecas de registro junto con mi proyecto.Mantener una biblioteca libre de dependencia

Mi pregunta es: ¿debo mantener libre la dependencia de mi biblioteca? ¿Hay alguna ventaja de hacerlo?

Respuesta

0

Pro:

  • Su biblioteca será mucho menor (lo más probable es que sólo se utiliza una pequeña parte de toda la funcionalidad de cualquier dependencia)
  • Ninguna actualización demonios (como el código necesita biblioteca C, versión 2, el producto X necesita su código y biblioteca C, versión 1).
  • Usted no tendrá que doblar la cuchara a los caprichos de otra persona (digamos la biblioteca que va desde 1.x 2.x -> necesita actualizar su código)

contra:

  • código desperdiciado si el producto X también necesita la biblioteca
  • ¿Qué tan inteligente es usted? Lo más probable es que no pueda coincidir con el pensamiento, la sabiduría y el tiempo que ya entraron en la biblioteca.

PD: Si desea admitir el registro, agregue slf4j a su código; esta es una API de 30KiB que permite a los usuarios de su código utilizar cualquier estructura de registro. Haga no use commons-logging.

1

Hay muchas ventajas de hacerlo, no menos la capacidad de ejecutar en la mayoría de los sistemas operativos.

Una forma de mantener libre de dependencia su biblioteca es solicitar que se inicialice antes de su uso. Entonces lo harías en your_lib_init(); función tomar un puntero a la función de inicio de sesión. Esto significa que el servidor puede reescribirse para cualquier plataforma en la que se ejecute.

También descubra, si quiere una biblioteca totalmente libre de todas las dependencias de la biblioteca, o una que dependa de la ruta de la clase estándar. Si es Java puro, se ejecutará en J2ME, Android, Java nativo compilado con GCJ y lo que no. Si utiliza la ruta de clases, será portátil en todas las implementaciones de rutas de clases, en la práctica donde se ejecute OpenJDK.

5

Agregaría una interfaz de registro que se puede usar para abstraer el registro. Luego, permite a los usuarios agregar el registro a través de esta interfaz. Usted también debe usar esta interfaz, y debe proporcionar un 'NullLogger' integrado en su biblioteca que se usaría si no se necesita ningún otro registro.

Puede facilitar el uso de NullLogger pidiendo a los usuarios que configuren uno nuevo, simplemente por archivo de configuración o por descubrimiento de tiempo de ejecución.

1

Use Java Logging. Es parte de JRE/JDK, por lo que no se necesitan libs externas.

Consulte examples.

+2

Bueno, lo mejor que se puede decir sobre jul es que está incluido. Casi todos los demás sistemas de registro son mejores (más fáciles de usar, personalizar, configurar, más rápido, más potentes).También tenga en cuenta que si usa jul, la mayoría de las personas que utilizan su biblioteca tendrán que superar jul para iniciar sesión en el marco de registro que utilizan en su lugar. –

+0

Tienes toda la razón. –

Cuestiones relacionadas