Includere una libreria per utilizzare una funzione / classi di utilità

5

Nella mia sede di lavoro ho notato una cosa strana in cui gli sviluppatori includeranno librerie di grandi dimensioni per fare cose semplici. Per essere chiari siamo un negozio di Scala. Ecco due esempi:

1) In un progetto facciamo l'analisi CSV che era in origine una funzione a 3 linee. A causa del creatore di CSV che non ha generato in modo coerente il formato corretto, questo è cresciuto fino a coprire vari casi d'angolo. Uno sviluppatore junior ha deciso di introdurre in scala-csv la descrizione dei formati CSV e una classe Exception. Non ha integrato l'analisi di CSV per utilizzare la libreria fino a quando non viene richiesta. Poiché avere due modi per analizzare CSv in un sistema è stupido, abbiamo scelto di utilizzare la libreria.

2) Uno sviluppatore senior acquistato in uno scala wrapper per il tempo di Joda per la sua capacità di ordinare. Questo è stato usato in un caso isolato. Quando viene richiesto di rimuovere o integrare completamente la libreria, l'unica scusa fornita era "beh, potremmo averne bisogno in seguito". Alla fine la libreria è stata rimossa.

Sebbene entrambe le storie siano diverse, evidenziano una strana mentalità di includere solo le librerie complete per le funzionalità di utilità. In entrambi i casi ho dovuto intervenire e insistere che ci integriamo con la libreria e usiamo la sua funzionalità di base o la rimuoviamo.

La mia domanda è se la mia insistenza sull'usare o meno le funzionalità offerte da una libreria completa o non includerla / far crearsi un cattivo approccio? La mia preoccupazione è che portare una libreria in giro per la funzionalità di utilità aggiunge solo problemi di dipendenza senza alcun beneficio. Ad esempio, la versione di Joda della libreria wrapper corrisponde alla nostra?

    
posta ahjmorton 09.10.2015 - 14:53
fonte

1 risposta

5

Le biblioteche hanno a che fare con la leva. Nel tuo primo caso, analizzando correttamente CSV, per tutte le molte, molte diverse interpretazioni (errate) di CSV sono già state risolte nella libreria. È una cosa perfettamente buona farlo nel modo giusto. Il tuo software è migliore e più piccolo per questo.

La spesa principale della proprietà intellettuale come il software per computer è il costo per mantenerla ed estenderla. Stai cercando di confrontare il costo di tre linee di software che gestiscono alcune fonti di dati vincolate rispetto a una libreria, che richiede una riga di codice build.sbt, che gestisce quasi tutti i casi di CSV.

Il costo reale di queste tre linee è "bene, devo pre-controllare i dati per vedere che scappa correttamente i newline incorporati, e assicurarmi che il file non provenga da Joe, che incorpora le virgole, e ... "

Modifica: per quanto riguarda l'inclusione nella libreria di naso in porta:

Gli sviluppatori includono spesso le librerie per nessun altro buon motivo che non ci sia una funzionalità utile che possono usare qui e ora. Esistono numerose librerie che offrono utilità in una determinata area.

  • Usando solo, diciamo, la funzionalità di controllo intervallo di Joda Time / Scala potrebbe essere paragonabile all'uso di un multimetro come un piccolo martello. Funziona, ma potrebbe mancare il punto. D'altra parte, forse si desidera migrare più ambienti per utilizzare la gestione del tempo molto superiore di quella libreria. Questa è una conversazione a livello di organizzazione che devi avere.
  • Una situazione molto peggiore si verifica quando vengono incluse numerose librerie diverse con funzionalità sostanzialmente sovrapposte. La mia preferita è la funzionalità di verifica delle stringhe disponibile in Apache Commons, Guava e una mezza dozzina di altre compilation. Un programmatore alla volta Googles per la funzione che svolge un determinato lavoro e ognuno seleziona una libreria diversa. Questa è una conversazione ancora più importante per l'organizzazione.

Questa intera domanda è strettamente correlata alla condivisione di classi e algoritmi all'interno della tua organizzazione. Richiede conversazioni per scoprire i requisiti, l'analisi delle duplicazioni e, più utile, l'analisi delle lacune.

    
risposta data 09.10.2015 - 15:17
fonte

Leggi altre domande sui tag