2009-08-13 14 views
5

Questa domanda è nata da un'applicazione web, sebbene dovrebbe essere valida anche per altri tipi di applicazioni. Sto usando MVC.Differenza tra libreria e codice applicazione?

Ho sia il codice dell'applicazione (modelli, viste, controllori, moduli, helper, ecc.) Sia il codice di libreria (librerie esterne e una libreria interna con mapper di database autodidatta, convertitori json ecc.).

Mi chiedo dove di solito tracciate la linea tra l'applicazione e il codice della libreria (quando entrambi sono scritti internamente)?

Parte del codice della libreria diventa piuttosto specifico del progetto, ma è ancora un po 'astratto.

risposta

5

Il codice libreria è destinato a essere riutilizzabile, in genere il codice dell'applicazione non lo è. Conserva il codice in una libreria quando non è legato specificamente all'applicazione.

In caso di dubbio cercare di rispondere a questa domanda:

Se scrivo un'altra applicazione, sarà questo codice rimarrà?

4

La mia regola generale è: Qualsiasi cosa possa mai essere utilizzata in un altro progetto e può essere fatta per non dipendere da alcun codice specifico dell'applicazione (e ci sono tutti i tipi di tecniche per farlo) dovrebbe andare in una biblioteca. Quindi, se potenzialmente riutilizzabile, entra in una biblioteca.

1

Di fronte a questo tipo di domande di categorizzazione desidero sapere una cosa: le conseguenze della categorizzazione errata.

Questo codice è "libreria", che il codice è "applicazione" ... a beneficio di chi viene fatta questa distinzione? Cosa succederebbe se mettessimo del codice nella categoria sbagliata?

Una possibile risposta:

Colpisce il riutilizzo del codice. Supponiamo di avere una politica: il codice della libreria è disponibile in una DLL con le intestazioni richieste, ecc. Il codice dell'applicazione è appena distribuito in un file .EXE.

Metti una bella routine per eseguire un calcolo difficile nell'app, non nella libreria, quindi non può essere riutilizzata facilmente.

Forse altre cose seguono da quella linea di pensiero ... si applicano le domande di controllo delle versioni. Abbiamo bisogno di produrre una documentazione migliore? [Anche con un singolo sviluppatore potremmo fare più attenzione?] Abbiamo bisogno di esternalizzare le informazioni di configurazione, ma dobbiamo essere doppiamente sicuri di non codificare nulla?

Problemi correlati