Le parti e la delega migliori: Crockford è troppo estremo?

4

Douglas Crockford ha recentemente presentato un talk chiamato The Better Parts . Il succo del discorso è che gli sviluppatori JavaScript dovrebbero in realtà evitare un superset di The Bad Parts , che ora include new , Object.create , qualsiasi da delega o ereditarietà, incluse le classi ES6, e this .

In particolare, Crockford consiglia di definire nuovi tipi di oggetto utilizzando una funzione di costruzione che crea e restituisce un nuovo oggetto e che utilizza la chiusura per creare variabili private e così via. Il problema ovvio con questo è che ogni istanza ha ciascuno dei suoi metodi legati direttamente all'istanza; non c'è delega, e questo è affamato di memoria. Crockford sostiene che questo è un non-problema, perché la memoria è così a buon mercato. L'ho trovato piuttosto poco convincente.

Nel caso in cui alcuni tipi richiedessero un certo numero di metodi e un numero molto grande di istanze potesse esistere contemporaneamente, sicuramente qualsiasi sviluppatore di JavaScript decente inserirà questi metodi in un oggetto e gli assegnerà ogni istanza. Sembra quindi ragionevole utilizzare solo quel tipo di delega a un passo per impostazione predefinita. Ciò va contro le raccomandazioni di The Better Parts e, non appena qualcuno dice "perché non rendere tale ricorsività delegata", siamo tornati al punto in cui abbiamo iniziato.

Ovviamente, se stai creando un numero molto grande di istanze di qualcosa, dovresti usare la delega come ovvia ottimizzazione, ma normalmente stiamo parlando di numeri relativamente piccoli, quindi per quel caso, possiamo semplicemente dimenticare i costi ?

Quali sono i costi di runtime dei consigli di Crockford, in particolare per quanto riguarda l'evitare la delega? Sui tipi di dispositivi consumer che tipicamente eseguono i browser Web, i costi sono generalmente minori?

    
posta Carl Smith 20.12.2014 - 17:39
fonte

1 risposta

5

Questo mi ricorda una domanda recente su link . E la risposta è davvero la stessa - sì, per piccoli valori.

Che cosa è piccolo e hai a che fare con piccoli? Quel genere fluttua, in base all'esperienza e al tuo dominio. Ma vai dagli esperti per la loro esperienza, dall'assenza di un determinato problema di prestazioni o dalla tua esperienza che dice che il tuo dominio è atipico, mi fiderei di loro su un problema di prestazioni come questo.

Ricorda che sta parlando con il pubblico, non tu individualmente. Se vuoi sapere se ha ragione nel tuo caso, allora misura ...

    
risposta data 20.12.2014 - 18:22
fonte

Leggi altre domande sui tag