Comprendi cos'è una chiusura
- Una chiusura è una funzione di prima classe che cattura i collegamenti lessicali nel suo ambiente. Questo impedisce al garbage collector di liberare lo spazio fino a quando tutti i riferimenti alla chiusura sono spariti.
Scopri come si svilupperà la chiusura
- È possibile creare facilmente una perdita di memoria con una chiusura perché l'unica interfaccia alla memoria allocata è attraverso la chiusura (in genere). Assicurati che la tua chiusura non cresca illimitata.
Attenzione per l'acquisizione di riferimenti
- Questo è più di un trucchetto standard, ma è ancora più importante quando si tratta di chiusure. Una chiusura acquisirà variabili lessicali incluse quelle che contengono riferimenti. Ciò significa che qualunque cosa rimandi a questi riferimenti continuerà a rimanere fedele fino a quando la chiusura è intorno, a meno che non siano refs esplicitamente deboli.
Non chiudere le variabili su cui non devi chiudere
- È uno spreco, codice errato e rende più probabile l'introduzione di una perdita di memoria.
Rendi le funzioni che diventeranno le chiusure il più semplici possibile
- Più è grande, più complessa la funzione che diventerà una chiusura, più è probabile che si verifichi un bug che potrebbe portare a una perdita di memoria.
Non creare chiusure quando non sono necessarie