SebastiaanBuwalda / PhaserSnake

Phaser snake game
http://18977.hosts.ma-cloud.nl/snakegame/
0 stars 0 forks source link

Global scope #3

Open BerendWeij opened 8 years ago

BerendWeij commented 8 years ago

Je hebt feedback gekregen van BerendWeij op:

var trueDirection = "right";
var score = 0;
var addNew = false;
var recordSwipe = true;
var listenToSwipes = false;
var scoreText;
var playerHolder;
var lastCell;
var firstCell; 

URL: https://github.com/SebastiaanBuwalda/PhaserSnake/blob/master/snakegame/Scripts/game.js

Feedback: Probeer globals (globale variabelen) te voorkomen. Als je een globale variabele aanmaakt dan komt hij in het algemene Window object terecht. Iedereen kan er zo bij en je hebt de kans dat andere libraries je variabelen overschrijven. Ook heb je er zo geen grip op wanneer de variabelen opgeruimd kunnen worden door de GC (garbage collector).

Sowieso is het een 'best practice' om je code in ieder geval binnen een Object te plaatsen, dan werk je al met een namespace en encapsulate je je code al.

var app = { // zet hier alle functies e.d. neer die je wilt start: function(){ // logica } };

Vaak wil je ook dat je code wordt aangemaakt binnen een functie. Dan valt het binnen 'function scope' en kan code buiten die functie niet bij jouw variabelen. Wat je hier voor kunt gebruiken zijn o.a. immediately-invoked function expression, afgekort tot IIFE.

Ook heeft de nieuwe versie van JavaScript nieuwe functionaliteiten zoals 'let', Classes en Modules.