2010-10-26 18 views
7

Ho una piccola libreria di utilità contenente alcuni utili metodi di utilità che sono stati completamente testati unitamente. Al momento, la mia biblioteca non ha dipendenze esterne. Mi piace l'idea di aggiungere la registrazione alle mie classi che potrebbe essere utile per scopi di debug. Ma ciò significherebbe raggruppare le librerie di logging insieme al mio progetto.Mantenere una libreria priva di dipendenze

La mia domanda è: dovrei mantenere libera la mia libreria? Ci sono dei vantaggi nel farlo?

risposta

0

Pro:

  • La vostra biblioteca sarà molto più piccola (è probabile che si sta utilizzando solo una piccola parte di tutte le funzionalità di qualsiasi dipendenza)
  • Nessun aggiornamento inferno (come il codice deve libreria C, versione 2, il prodotto X ha bisogno del tuo codice e della libreria C, versione 1).
  • Non avrete bisogno di piegare il cucchiaio per i capricci di qualcun altro (ad esempio la libreria si va da 1.x alla 2.x -> è necessario aggiornare il codice)

Con:

  • codice sprecata se il prodotto X ha bisogno anche la biblioteca
  • Quanto sei intelligente? Le probabilità sono che non puoi abbinare il pensiero, la saggezza e il tempo che è già andato in biblioteca.

PS: Se si desidera supportare la registrazione, aggiungere slf4j al codice; questa è un'API da 30 KiB che consente agli utenti del tuo codice di utilizzare qualsiasi framework di registrazione. Fare non utilizzare commons-logging.

1

Ci sono molti vantaggi nel farlo, non ultima la possibilità di funzionare sulla maggior parte dei sistemi operativi.

Un modo per mantenere la libreria abbastanza libera da dipendenze è di richiederlo all'inizializzazione prima dell'uso. Allora lo faresti in your_lib_init(); funzione accetta un puntatore alla funzione di registrazione back-end. Ciò significa che il back-end può essere riscritto per qualsiasi piattaforma su cui potrebbe essere eseguito.

Inoltre, se si desidera una libreria totalmente libera da tutte le dipendenze della libreria o una che dipende dal percorso della classe standard. Se è Java puro, verrà eseguito su J2ME, Android, Java compilato nativo con GCJ e cosa no. Se utilizza il percorso di classe, sarà portatile su tutte le implementazioni del percorso di classe, in pratica ovunque venga eseguito OpenJDK.

5

Vorrei aggiungere un'interfaccia di registrazione che può essere utilizzata per astrarre la registrazione. Quindi consentire agli utenti di aggiungere la registrazione tramite questa interfaccia. Anche tu dovresti usare questa interfaccia, e dovresti fornire un 'NullLogger' incorporato nella tua libreria che verrebbe usato se non fosse necessaria altra registrazione.

È possibile semplificare l'utilizzo di NullLogger chiedendo agli utenti di configurarne uno nuovo, semplicemente mediante file di configurazione o individuazione del tempo di esecuzione.

1

Utilizzare Java Logging. Fa parte di JRE/JDK quindi non sono necessarie librerie esterne.

Check out examples.

+2

Bene, la cosa migliore che si può dire su Julia è che è inclusa. Quasi tutti gli altri sistemi di registrazione sono migliori (più facili da usare, personalizzare, configurare, più veloce, più potente).Si noti inoltre che se si utilizza jul, la maggior parte delle persone che utilizzano la libreria dovrà battere jul per accedere al framework di registrazione che usano invece. –

+0

Hai assolutamente ragione. –

Problemi correlati