Domanda

Di recente abbiamo avuto una discussione in ufficio a causa di opinioni contrastanti tra gli sviluppatori. Una parte (laterale S) ha sostenuto soluzioni tecniche -generalmente necessarie per essere specifiche possibile, mentre l'altra parte (lato G) ha sostenuto che sono preferite soluzioni generalizzate.

Cercherò di tenerlo breve; Ci occupiamo di trasferimenti di file e dobbiamo iniziare a salvare tre file (log.txt, dettagli.txt, ricezione.pdf) per ciascun trasferimento. Abbiamo già una tabella di file che useremo, ma siamo tutti d'accordo sul fatto che abbiamo bisogno di una tabella diversa per creare una relazione da uno a molti trasferimenti e file.

Side G proposto Creazione di risorse generali_attachments Tabella in grado di allegare file a qualsiasi tipo di risorsa che assomiglierebbe a questo;
Resource_Attachments
- id: int
- EntityID: int
- EntityType: stringa
- fileid: int
- Kind: String

Il lato S non era d'accordo e proposto di creare una tabella di trasferimento_attachments specializzata, qualcosa del genere;
Transfer_Attachments
- id: int
- TransferId: int
- fileid: int
- Kind: String

Un argomento del lato S è che qualsiasi risorsa dovrebbe essere il più specifica possibile, quindi il suo ruolo e i suoi attributi e i loro possibili valori sono chiari, quindi qualsiasi nuovo sviluppatore non avrà problemi a capirlo.

Un argomento del lato G era che un approccio più generalizzato avrebbe fornito una gamma più ampia di funzionalità; Puoi allegare file a qualsiasi risorsa, qualunque sia il loro ruolo.

Sebbene le differenze pratiche siano molto piccole, ci sono alcune cose fondamentali in corso qui (è qui che diventa filosofico); Una persona nella stanza ha osservato bruscamente che il generalizzatore è l'esperto di Ruby, mentre lo specializzatore è l'esperto di Java. Ruby è un linguaggio interpretato con digitazione dinamica mentre Java è un linguaggio compilato con digitazione statica.

Ho trovato la questione selvaggiamente interessante e mi chiedevo quale approccio fosse preferito; Soluzione specializzata o generalizzata e quali questioni dovrebbero essere prese in considerazione?

Nota che stiamo solo parlando di una parte tecnica della soluzione, questo non ha nulla a che fare con l'esperienza dell'utente finale.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top