La mia piccola libreria software dovrebbe evitare l'uso di altre librerie?

13

Ho appena rilasciato una piccola libreria Java che offre solo alcune classi e metodi. Da quando ho creato il progetto con Maven, ho utilizzato immediatamente diverse librerie di terze parti per raggiungere i miei obiettivi, in particolare:

  • commons-lang3 (per alcune cose Java generiche)
  • slf4j-api (per la registrazione)
  • commons-io (per un po 'di file - leggendo letteralmente un file una volta, penso)

Non voglio che la mia biblioteca appaia gonfiata agli occhi degli altri. Dovrei provare a rimuovere la mia dipendenza da queste librerie per ridurre al minimo il mio impatto? Qualche consiglio su quali tipi di librerie sarebbe meglio evitare se si pensa di usarne di più in futuro?

    
posta Duncan Jones 31.01.2013 - 18:47
fonte

2 risposte

8

Sto rispondendo considerando la tua situazione specifica. Direi che va bene usare quelle librerie. Assicurati che il tuo slf4j-api non porti con sé l'implementazione. Con ciò intendo contrassegnare la dipendenza di implementazione come "test". EG:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.2</version>
    <scope>test</scope>
</dependency>

Questo è descritto in dettaglio nelle FAQ di SLF4j.

Come per gli altri due, IME, sono sempre compatibili all'indietro. Pertanto, se tra 5 anni ho bisogno di utilizzare la tua libreria ma stai utilizzando una versione precedente di quelle, posso solo escludere le tue dipendenze e il nostro codice funzionerà ancora. In altre parole, usando queste librerie specifiche non introdurrete jar-hell per gli altri.

Se utilizzo la tua libreria tramite Maven, non noterò se la tua libreria è gonfia o no. Dipenderò solo dal tuo e lo userò. Penso che sia più importante che il tuo codice funzioni correttamente rispetto al suo ingombro ridotto. Preferisco che tu usi i comuni-io invece di reinventare la ruota con un bug in esso.

    
risposta data 31.01.2013 - 18:52
fonte
1

No.

"Bloat" è un mito. Indipendentemente dalla quantità di codice presente nella libreria, se parte di quel codice non viene mai utilizzata non verrà cercata nella pagina - avrà nessun impatto sulle prestazioni o sull'impronta di memoria.

D'altra parte, se hai bisogno di quella parte extra di funzionalità hai due scelte. Puoi scriverlo tu stesso e dedicare molto tempo e sforzi a risolvere problemi che altri hanno già risolto in precedenza, oppure puoi scegliere di utilizzare la soluzione che esiste già (ed è stata testata / debuggata / etc).

Questo ci lascia con dimensioni di download e ingombro del disco e, a meno che non si stiano parlando di numeri stupidi, nel 2013 sono due fattori che dovrebbero essere vicini al fondo dell'elenco di cose di cui preoccuparsi.

    
risposta data 02.02.2013 - 02:53
fonte

Leggi altre domande sui tag