Quando utilizzare le librerie condivise

7

Nota: non sono sicuro che questa domanda sia più adatta per Stack Overflow o Programmer. Il processo di pensiero dietro a metterlo qui era che in realtà non si riferisce alla codifica stessa.

Ho notato che una piccola utility freeware che ho sul mio computer utilizza un paio di DLL. Dai loro nomi ("RenderAllChunks" e "RenderSlice"), sembra che vengano utilizzati solo per funzioni specifiche. Se l'outsourcing delle funzioni specifiche del programma è davvero necessario, non sarebbe meglio semplicemente inserirle in un file di intestazione separato? Sembra abbastanza inutile passare attraverso tutti i problemi della compilazione, del collegamento e della distribuzione di DLL solo per una funzione.

  • È brutto usare librerie condivise per piccoli progetti?
  • Quando / perché le librerie condivise sono preferibili su librerie statiche (o anche file di intestazione)?
posta Maxpm 16.12.2010 - 22:22
fonte

3 risposte

7

Le librerie dinamiche sono utili per i driver, perché usano un'interfaccia standardizzata in cui il sistema operativo può collegarsi direttamente al codice e non preoccuparsi degli argomenti della riga di comando e della follia, se invece fosse un'applicazione. Per lo stesso motivo sono utili per fornire una funzionalità comune a qualsiasi programma che voglia usarlo, come le DLL dell'API di Windows. Le librerie dinamiche non dovrebbero mai essere create per una singola app, con la possibile eccezione dei plug-in.

Personalmente non mi piacciono le librerie statiche. Dal momento che sono sempre caricati, stanno prendendo in memoria se li stai usando o meno. Suppongo che siano utili se stai usando la libreria di qualcun altro e ne stai facendo costantemente uso nel tuo codice.

    
risposta data 16.12.2010 - 23:04
fonte
4

La mia regola è se si tratta di una porzione logica di codice che può eseguire una funzione o gruppi di funzioni che ha la possibilità di riutilizzarlo dovrebbe essere in una DLL. dll Non dovrebbe contenere solo una funzione o funzioni che possono funzionare solo in base ad altre funzioni in un'altra dll.

    
risposta data 16.12.2010 - 22:33
fonte
1

Soprattutto se lavori nel software commerciale / di mercato di massa, è meglio limitare il numero di dipendenze esterne. Nel mio software, utilizzo solo una libreria quando non riesco a compilarla direttamente in un eseguibile (ad esempio, chiamando una DLL c-made da un programma Delphi). Limitare il numero di dipendenze limita il numero di possibili problemi ad essi relativi durante la distribuzione su macchine il cui ambiente non si controlla.

Anni fa, quando i dischi rigidi erano piccoli e costosi poteva esserci un qualche uso per usare le DLL per ridurre lo spazio su disco, ma quell'età è ormai finita sui PC, imo. E probabilmente anche sui telefoni e sulla maggior parte dei dispositivi al giorno d'oggi.

    
risposta data 16.12.2010 - 22:29
fonte

Leggi altre domande sui tag