Idiomatic JavaScript codice architettura

3

Sto scrivendo un'applicazione node.js che sto suddividendo in moduli, il problema è che non sono sicuro di come organizzare il mio codice in modo idiomatico in Javascript.

Attualmente, ciascuno dei miei moduli espone un insieme di funzioni che devono essere chiamate direttamente. Tutto lo stato è modificato dal modulo con il gameId che è il primo parametro:

//snip
    var gameId = gameModule.createGame();
    // Return the gameId down to a remote client
    client.send(gameId);
}
// When a remote client wants to add a player
    gameModule.addPlayer(gameId, "Player 1");
}

Un approccio alternativo sarebbe effettivamente utilizzare gli oggetti, ad es. :

//snip
var game = new gameModule.Game();
// Return the gameId down to a remote client
client.send(game.getId());
}
//snip
// When a remote client wants to add a player
var gameToModify = gameModule.getGame(gameId);
gameToModify.addPlayer("Player 1");
gameModule.saveGame(gameToModify);

La mia domanda è rivolta a qualsiasi programmatore Javascript (o normale): quale delle due alternative sopra sembra più semplice da usare con / più naturale?

    
posta ahjmorton 03.04.2013 - 19:56
fonte

1 risposta

3

Il problema con il primo codice è che nascondendo l'oggetto Gioco si impediscono tutte le azioni dirette su questo oggetto, poiché ognuna di esse implica l'uso di gameId per cercare, all'interno della libreria, l'oggetto. Ciò avrà un impatto delle prestazioni se si eseguono piccole azioni. E potresti essere tentato di scrivere troppo codice per evitare quelle azioni troppo piccole.

Senza esitazione, nel tuo caso specifico, la seconda versione è più pulita.

Vorrei, comunque, completare la logica abilitando

gameToModify.save();
    
risposta data 03.04.2013 - 20:02
fonte

Leggi altre domande sui tag