L'utilizzo di molte librerie di terze parti gratuite è una buona cosa? [chiuso]

5

Per i tuoi progetti proprietari al lavoro?

I problemi che posso immaginare sono: più dll (può essere un problema quando ad esempio devi includere una grande DLL ma hai solo bisogno di poche funzioni in quella libreria), un sacco di istruzioni di licenza di cui devi occuparti quando rilascialo il tuo prodotto, l'affidabilità della biblioteca, ecc.

Qualche altro potenziale problema? Qual è la tua opinione? (informazioni: sto usando .NET al lavoro)

    
posta Louis Rhys 23.12.2010 - 04:59
fonte

7 risposte

21

Perché dovresti sempre consider una libreria esistente per la riscrittura completa proposta dallo sviluppatore, solitamente perché sarà "migliore":

  • Gli autori sono esperti nel dominio coperto dalla libreria. Questo assicura che otterrai un'implementazione perfetta. Un buon esempio è SharpMap. Gli autori sono esperti in software geospaziali.

  • Saranno più stabili dei tuoi come viene utilizzato da centinaia se non da migliaia di altri utenti. Sicuramente incontrerai dei problemi, ma molti di loro sono già stati incontrati da altri e riparati dagli autori. Se non li risolvono, è una buona opportunità per te contribuire!

  • Imparerai da altri codice o progettazione. Molte librerie popolari sono scritte da sviluppatori di prim'ordine e di solito mettono in luce buone pratiche e progetti di codifica. Imparerai a usarli.

  • Risparmia tonnellate di denaro . L'equivalente di centinaia se non migliaia di giorni lavorativi di lavoro gratis o nel peggiore giorno di un uomo.

  • Ottieni assistenza premium . Le librerie a pagamento di solito hanno il supporto gratuito di sviluppatori di prim'ordine che puoi contattare 24 ore al giorno. Molti sviluppatori di librerie libere forniscono anche quel livello di supporto. Esponendo la tua squadra a quegli sviluppatori con vantaggio per loro.

  • Le nuove funzionalità appariranno automaticamente senza sforzi nel tuo prodotto. Se si utilizza il motore di report dal fornitore X, il fornitore X rilascia la nuova funzionalità Y. È possibile fornire tale funzione Y al cliente senza alcun costo, con uno sforzo molto basso. Puoi quindi considerare gli autori delle tue librerie come gli altri team che lavorano per te, gratuitamente o con pochi soldi!

Se non sei un esperto nel dominio, hai migliaia di utenti, non hai nulla da imparare dagli altri, hai un sacco di soldi, non hai bisogno di alcun supporto e hai un sacco di risorse, lì non c'è motivo di reinventare la ruota .

In risposta al commento di Lenny di seguito, userò questo fatto: quando i giornalisti hanno chiesto a Shepard cosa ne pensava di lui seduto in cima al razzo Redstone, in attesa di decollo, aveva risposto,

The fact that every part of this ship was built by the low bidder

Pensi che la NASA sarebbe stata in grado di inviare uomini sulla luna se provassero a costruire da soli i componenti del loro razzo?

    
risposta data 23.12.2010 - 10:20
fonte
12

Usa librerie che sono stabili. Quale sarebbe l'alternativa comunque? Riscrivere il codice da zero?

    
risposta data 23.12.2010 - 05:02
fonte
7

Le librerie di terze parti dell'IMO sono un'ottima cosa, ma ho una regola che può usare solo le librerie che hanno il codice sorgente. Nel mio precedente lavoro abbiamo utilizzato Delphi e questa politica ha salvato i nostri mozziconi così tante volte da quando molti fornitori di terze parti di Delphi sono usciti dal mercato, non si sa mai.

    
risposta data 23.12.2010 - 06:43
fonte
4

Va bene finché hai una buona gestione. Per quanto ti riguarda, potrebbe essere necessario del tempo per sfruttare altri lavori, e le cattive librerie a volte producono anche risultati imprevisti.

Cerco di utilizzare la libreria popolare che ha una grande community. Quindi, quando c'è un problema, posso chiedere assistenza a provider / altri utenti.

    
risposta data 23.12.2010 - 05:55
fonte
3

Utilizzare le librerie di terze parti è quasi sempre una buona cosa. Ma a volte, quando mi serve solo un piccolo metodo di supporto, guardo a come la lib di terze parti lo implementa, e poi lo implemento io stesso per limitare le dipendenze (se sono autorizzato a farlo).

    
risposta data 23.12.2010 - 10:39
fonte
0

La risposta ovvia è che dovresti usare la libreria. Dovrebbe quasi essere la tua risposta predefinita a quella domanda. Cosa dovresti davvero chiedere se invece devi fare qualcosa da solo. Motivi in cui potrebbe avere un senso:

  • sta facendo qualcosa che si adatta alla tua competenza principale come azienda
  • è fondamentale per la tua azienda (nessuna sostituzione, molto centrale per ciò che fai)
  • hai effettivamente il tempo di farlo
  • nessuno della libreria esistente fa ciò di cui hai bisogno in quanto ne hai bisogno (non abbastanza veloce, richiede troppa memoria, ecc ...)

È un segno di programmatori cattivi pensare che quasi sempre si applicano queste ragioni, specialmente le ultime due. In realtà non si applicano quasi mai.

    
risposta data 30.12.2010 - 05:31
fonte
0

È raro, ma ci sono situazioni in cui non è possibile installare librerie di terze parti o anche se sarebbe comodo / efficace. Penso che sia un buon problema di design per isolare la parte del progetto, in cui le librerie non possono essere utilizzate.

Stiamo sviluppando un aut home. sistema, dove il back-end è in esecuzione su piccole macchine Linux. In questo ambiente non possiamo usare le solite cose Linux, come Apache, MySQL, PHP o librerie intelligenti. La nostra casa aut. il server utilizza solo stdlib, pthreads e opzionalmente Alsa. Dobbiamo compilare ARM, PPC, AVR, MIPS e altri sistemi non X86, che a volte sono estremamente limitati.

Pertanto, abbiamo preso le seguenti decisioni sul design:

  • La funzionalità del server dovrebbe essere minima. La funzione più complessa è un semplice server web, che può fornire file e 2 tipo di richiesta AJAX. Il server è modulare, i componenti sono molto piccoli. Utilizziamo architettura del flusso di dati , che lo rende possibile.
  • L'ambiente di sviluppo per il server è complesso. Abbiamo 2 livelli extra, uno di configurazione e uno di flusso di dati, prima della toolchain GNU. Usando le parole d'ordine, dovrei dire che abbiamo spostato la complessità dal tempo di esecuzione al tempo di compilazione . Non abbiamo limiti quando prepariamo e compiliamo materiale, ad es. il nostro compilatore di flussi di dati è scritto in PHP - non è ottimale, ma non ci interessa, produce il risultato appropriato. Inoltre, gli strumenti di configurazione sono scritti in JS-AJAX / PHP, in precedenza abbiamo usato Excel (!) Per configurare rapidamente una configurazione.
  • L'interfaccia utente è una WebApp basata su AJAX, in cui non abbiamo più limiti. L'interfaccia utente invia solo richieste atomiche al server, tutto il materiale pesante viene eseguito da JavaScript. Inoltre, utilizziamo un framework JS (DomAssistant).

Quindi, dal sottosistema 3 (server, toolchain, UI) solo il server è dove non possiamo godere della ricchezza di librerie e piattaforme.

    
risposta data 30.12.2010 - 12:30
fonte

Leggi altre domande sui tag