Collegamento di un'interfaccia su moduli di terze parti per sviluppare app a prova di futuro e scalabili

0

Ogni giorno un paio di nuovi moduli javascript vengono creati e pubblicati in tutto il mondo e abbiamo bisogno di pensare a lungo termine. Diciamo che oggi ho bisogno di usare un modulo ORM per andare liscio e veloce. Ma domani potrei trovarmi di fronte a un modulo deprecato o trovarne uno migliore da cambiare o magari doverlo creare da solo.

Ad esempio, il team ha deciso di utilizzare Sequelizejs in cima al Sqlite per fornire i modelli:

const User = sequelize.define('user', {
  username: Sequelize.STRING
});
User.create({
    username: 'melbourne'
});

Quindi, è stato introdotto un nuovo tipo di database come Realm e hanno programmato di passare:

class User {}
User.schema = {
  name: 'User',
  properties: {
    username: {type: 'string'}
  }
};

let realm = new Realm({schema: [User]});
realm.write(() => {
  realm.create('User', {
    username: 'melbourne'
  });
});

Quindi, questo può portare al refactoring dell'intera applicazione e il team ha bisogno di un'interfaccia per presentare in prima pagina e ignorare la riscrittura del codice. Di conseguenza, il passaggio sarà semplice e la modifica delle associazioni non influirà sull'intero codice.

class User  {
  //...
  define(name, dataTypes) {
    ThirdParty.define(name, dataTypes);
  }
  create(data) {
    ThirdParty.create(data);
  }
  //...
}

Per quanto riguarda l'esempio, quale sarebbe il buon modello di design in javascript? Come associare un'interfaccia a moduli di terze parti per sviluppare le app a prova di futuro e scalabili?

    
posta Vahid Hallaji 13.07.2017 - 09:36
fonte

1 risposta

3

Non penso sia possibile in generale fornire un livello di astrazione a prova di futuro. Librerie diverse hanno approcci diversi allo stesso problema, il che significa che possono fornire diverse astrazioni.

Inoltre, il punto di una biblioteca è quello di farti lavorare. Se si deve replicare l'intero modello di dati a un livello sopra l'ORM solo per fornire un livello di astrazione, si introduce complessità senza alcun vantaggio.

Penso che l'approccio migliore sia quello di mantenere il codice in buone condizioni in generale e seguire i principi della separazione delle preoccupazioni e delle singole responsabilità, ma non introdurre livelli per preparare una sostituzione della biblioteca che potrebbe non accadere comunque. Vedi il principio YAGNI .

    
risposta data 13.07.2017 - 10:15
fonte

Leggi altre domande sui tag