Question

Nous avons récemment eu une discussion dans le bureau en raison des opinions contradictoires entre les développeurs. Un côté (côté S) a soutenu que les solutions techniques - généralement doivent être spécifiques que possible, tandis que l'autre côté (côté g) a argumenté des solutions généralisées sont préférées.

J'essaierai de le garder court; Nous traitons avec les transferts de fichiers et nous devons commencer à enregistrer trois fichiers (log.txt, de détail.txt, reçoip.pdf) pour chaque transfert. Nous avons déjà une table de fichiers que nous utiliserons, mais nous convenons tous que nous avons besoin d'une table différente pour créer une relation un-à-plusieurs entre les transferts et les fichiers.

Côté g proposé créant une table générale de ressources_attachements qui peut attacher des fichiers à n'importe quel type de ressource, il ressemblerait à ceci;
Resource_attachments
- id: int
- EntityId: int
- EntityType: chaîne
- FileID: int
- Kind: chaîne

Le côté est en désaccord et a proposé de créer une table spécialisée transfert_attachments, quelque chose comme ça;
transfert_attachments
- id: int
- transférid: int
- FileID: int
- Kind: chaîne

Un argument des côtés est que toute ressource doit être aussi spécifique que possible afin que son rôle et ses attributs et leurs valeurs possibles soient clairs, de sorte que tout nouveau développeur n'aura aucun mal à le comprendre.

Un argument du côté G était qu'une approche plus généralisée fournirait un éventail plus large de fonctionnalités; Vous pouvez attacher des fichiers à n'importe quelle ressource, quel que soit leur rôle.

Bien que les différences pratiques soient très petites, il y a des choses fondamentales en cours ici (c'est là qu'elle devient philosophique); Une personne dans la salle a fortement observé que le généralisateur est l'expert Ruby, tandis que le spécialiste est l'expert Java. Ruby est un langage interprété avec typage dynamique tandis que Java est un langage compilé avec typage statique.

J'ai trouvé la question très intéressante et je me demandais quelle approche est préférée; Solution spécialisée ou généralisée, et quelles sont les questions devraient être prises en compte?

Notez que nous ne parlons que d'une partie technique de la solution, cela n'a rien à voir avec l'expérience de l'utilisateur final.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top