From 31d88a78b0807370a1a3bbe80ccf4896851fca50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Val=C3=A8re=20Pique?= Date: Fri, 6 Jan 2017 12:48:54 +0100 Subject: [PATCH 1/3] MINUTES_IN_A_YEAR is a constant so we need use const, we should use let for the index --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 17e17fcd..16c44ef1 100644 --- a/README.md +++ b/README.md @@ -101,9 +101,9 @@ for (var i = 0; i < 525600; i++) { **Good**: ```javascript -// Declare them as capitalized `var` globals. -var MINUTES_IN_A_YEAR = 525600; -for (var i = 0; i < MINUTES_IN_A_YEAR; i++) { +// Declare them as capitalized `const` globals. +const MINUTES_IN_A_YEAR = 525600; +for (let i = 0; i < MINUTES_IN_A_YEAR; i++) { runCronJob(); } ``` From 84de661ad433524b275dcd60ab878bd155236c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Val=C3=A8re=20Pique?= Date: Fri, 6 Jan 2017 12:57:21 +0100 Subject: [PATCH 2/3] Replace all var by let --- README.md | 118 +++++++++++++++++++++++++++--------------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index 16c44ef1..e4a5904d 100644 --- a/README.md +++ b/README.md @@ -43,12 +43,12 @@ improvement. Beat up the code instead! **Bad:** ```javascript -var yyyymmdstr = moment().format('YYYY/MM/DD'); +let yyyymmdstr = moment().format('YYYY/MM/DD'); ``` **Good**: ```javascript -var yearMonthDay = moment().format('YYYY/MM/DD'); +let yearMonthDay = moment().format('YYYY/MM/DD'); ``` **[⬆ back to top](#table-of-contents)** @@ -131,7 +131,7 @@ Explicit is better than implicit. **Bad:** ```javascript -var locations = ['Austin', 'New York', 'San Francisco']; +let locations = ['Austin', 'New York', 'San Francisco']; locations.forEach((l) => { doStuff(); doSomeOtherStuff(); @@ -145,7 +145,7 @@ locations.forEach((l) => { **Good**: ```javascript -var locations = ['Austin', 'New York', 'San Francisco']; +let locations = ['Austin', 'New York', 'San Francisco']; locations.forEach((location) => { doStuff(); doSomeOtherStuff(); @@ -163,7 +163,7 @@ variable name. **Bad:** ```javascript -var Car = { +let Car = { carMake: 'Honda', carModel: 'Accord', carColor: 'Blue' @@ -176,7 +176,7 @@ function paintCar(car) { **Good**: ```javascript -var Car = { +let Car = { make: 'Honda', model: 'Accord', color: 'Blue' @@ -193,7 +193,7 @@ function paintCar(car) { **Bad:** ```javascript function createMicrobrewery(name) { - var breweryName; + let breweryName; if (name) { breweryName = name; } else { @@ -205,7 +205,7 @@ function createMicrobrewery(name) { **Good**: ```javascript function createMicrobrewery(name) { - var breweryName = name || 'Hipster Brew Co.' + let breweryName = name || 'Hipster Brew Co.' } ``` **[⬆ back to top](#table-of-contents)** @@ -236,7 +236,7 @@ function createMenu(title, body, buttonText, cancellable) { **Good**: ```javascript -var menuConfig = { +let menuConfig = { title: 'Foo', body: 'Bar', buttonText: 'Baz', @@ -395,10 +395,10 @@ generic functions quite easy. Take advantage of that! ```javascript function showDeveloperList(developers) { developers.forEach(developers => { - var expectedSalary = developer.calculateExpectedSalary(); - var experience = developer.getExperience(); - var githubLink = developer.getGithubLink(); - var data = { + let expectedSalary = developer.calculateExpectedSalary(); + let experience = developer.getExperience(); + let githubLink = developer.getGithubLink(); + let data = { expectedSalary: expectedSalary, experience: experience, githubLink: githubLink @@ -410,10 +410,10 @@ function showDeveloperList(developers) { function showManagerList(managers) { managers.forEach(manager => { - var expectedSalary = manager.calculateExpectedSalary(); - var experience = manager.getExperience(); - var portfolio = manager.getMBAProjects(); - var data = { + let expectedSalary = manager.calculateExpectedSalary(); + let experience = manager.getExperience(); + let portfolio = manager.getMBAProjects(); + let data = { expectedSalary: expectedSalary, experience: experience, portfolio: portfolio @@ -428,9 +428,9 @@ function showManagerList(managers) { ```javascript function showList(employees) { employees.forEach(employee => { - var expectedSalary = employee.calculateExpectedSalary(); - var experience = employee.getExperience(); - var portfolio; + let expectedSalary = employee.calculateExpectedSalary(); + let experience = employee.getExperience(); + let portfolio; if (employee.type === 'manager') { portfolio = employee.getMBAProjects(); @@ -438,7 +438,7 @@ function showList(employees) { portfolio = employee.getGithubLink(); } - var data = { + let data = { expectedSalary: expectedSalary, experience: experience, portfolio: portfolio @@ -473,7 +473,7 @@ function writeForumComment(subject = 'No subject', body = 'No text') { **Bad:** ```javascript -var menuConfig = { +let menuConfig = { title: null, body: 'Bar', buttonText: null, @@ -493,7 +493,7 @@ createMenu(menuConfig); **Good**: ```javascript -var menuConfig = { +let menuConfig = { title: 'Order', // User did not include 'body' key buttonText: 'Send', @@ -563,7 +563,7 @@ be happier than the vast majority of other programmers. ```javascript // Global variable referenced by following function. // If we had another function that used this name, now it'd be an array and it could break it. -var name = 'Ryan McDermott'; +let name = 'Ryan McDermott'; function splitIntoFirstAndLastName() { name = name.split(' '); @@ -580,8 +580,8 @@ function splitIntoFirstAndLastName(name) { return name.split(' '); } -var name = 'Ryan McDermott' -var newName = splitIntoFirstAndLastName(name); +let name = 'Ryan McDermott' +let newName = splitIntoFirstAndLastName(name); console.log(name); // 'Ryan McDermott'; console.log(newName); // ['Ryan', 'McDermott']; @@ -602,14 +602,14 @@ would be much better to just use ES6 classes and simply extend the `Array` globa **Bad:** ```javascript Array.prototype.diff = function(comparisonArray) { - var values = []; - var hash = {}; + let values = []; + let hash = {}; - for (var i of comparisonArray) { + for (let i of comparisonArray) { hash[i] = true; } - for (var i of this) { + for (let i of this) { if (!hash[i]) { values.push(i); } @@ -627,14 +627,14 @@ class SuperArray extends Array { } diff(comparisonArray) { - var values = []; - var hash = {}; + let values = []; + let hash = {}; - for (var i of comparisonArray) { + for (let i of comparisonArray) { hash[i] = true; } - for (var i of this) { + for (let i of this) { if (!hash[i]) { values.push(i); } @@ -670,9 +670,9 @@ const programmerOutput = [ } ]; -var totalOutput = 0; +let totalOutput = 0; -for (var i = 0; i < programmerOutput.length; i++) { +for (let i = 0; i < programmerOutput.length; i++) { totalOutput += programmerOutput[i].linesOfCode; } ``` @@ -695,7 +695,7 @@ const programmerOutput = [ } ]; -var totalOutput = programmerOutput +let totalOutput = programmerOutput .map((programmer) => programmer.linesOfCode) .reduce((acc, linesOfCode) => acc + linesOfCode, 0); ``` @@ -871,14 +871,14 @@ they are fixed if they can be. // On old browsers, each iteration would be costly because `len` would be // recomputed. In modern browsers, this is optimized. -for (var i = 0, len = list.length; i < len; i++) { +for (let i = 0, len = list.length; i < len; i++) { // ... } ``` **Good**: ```javascript -for (var i = 0; i < list.length; i++) { +for (let i = 0; i < list.length; i++) { // ... } ``` @@ -899,7 +899,7 @@ function newRequestModule(url) { // ... } -var req = newRequestModule; +let req = newRequestModule; inventoryTracker('apples', req, 'www.inventory-awesome.io'); ``` @@ -910,7 +910,7 @@ function newRequestModule(url) { // ... } -var req = newRequestModule; +let req = newRequestModule; inventoryTracker('apples', req, 'www.inventory-awesome.io'); ``` **[⬆ back to top](#table-of-contents)** @@ -976,7 +976,7 @@ This can be accomplished through closures (for ES5 and below). **Bad:** ```javascript -var Employee = function(name) { +let Employee = function(name) { this.name = name; } @@ -984,7 +984,7 @@ Employee.prototype.getName = function() { return this.name; } -var employee = new Employee('John Doe'); +let employee = new Employee('John Doe'); console.log('Employee name: ' + employee.getName()); // Employee name: John Doe delete employee.name; console.log('Employee name: ' + employee.getName()); // Employee name: undefined @@ -992,7 +992,7 @@ console.log('Employee name: ' + employee.getName()); // Employee name: undefined **Good**: ```javascript -var Employee = (function() { +let Employee = (function() { function Employee(name) { this.getName = function() { return name; @@ -1002,7 +1002,7 @@ var Employee = (function() { return Employee; }()); -var employee = new Employee('John Doe'); +let employee = new Employee('John Doe'); console.log('Employee name: ' + employee.getName()); // Employee name: John Doe delete employee.name; console.log('Employee name: ' + employee.getName()); // Employee name: John Doe @@ -1428,7 +1428,7 @@ classes until you find yourself needing larger and more complex objects. **Bad:** ```javascript -var Animal = function(age) { +let Animal = function(age) { if (!(this instanceof Animal)) { throw new Error("Instantiate Animal with `new`"); } @@ -1438,7 +1438,7 @@ var Animal = function(age) { Animal.prototype.move = function() {}; -var Mammal = function(age, furColor) { +let Mammal = function(age, furColor) { if (!(this instanceof Mammal)) { throw new Error("Instantiate Mammal with `new`"); } @@ -1451,7 +1451,7 @@ Mammal.prototype = Object.create(Animal.prototype); Mammal.prototype.constructor = Mammal; Mammal.prototype.liveBirth = function() {}; -var Human = function(age, furColor, languageSpoken) { +let Human = function(age, furColor, languageSpoken) { if (!(this instanceof Human)) { throw new Error("Instantiate Human with `new`"); } @@ -1779,9 +1779,9 @@ require('request-promise').get('https://en.wikipedia.org/wiki/Robert_Cecil_Marti ```javascript async function getCleanCodeArticle() { try { - var request = await require('request-promise') - var response = await request.get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin'); - var fileHandle = await require('fs-promise'); + let request = await require('request-promise') + let response = await request.get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin'); + let fileHandle = await require('fs-promise'); await fileHandle.writeFile('article.html', response); console.log('File written'); @@ -1933,15 +1933,15 @@ Comments are an apology, not a requirement. Good code *mostly* documents itself. ```javascript function hashIt(data) { // The hash - var hash = 0; + let hash = 0; // Length of string - var length = data.length; + let length = data.length; // Loop through every character in data - for (var i = 0; i < length; i++) { + for (let i = 0; i < length; i++) { // Get character code. - var char = data.charCodeAt(i); + let char = data.charCodeAt(i); // Make the hash hash = ((hash << 5) - hash) + char; // Convert to 32-bit integer @@ -1954,11 +1954,11 @@ function hashIt(data) { ```javascript function hashIt(data) { - var hash = 0; - var length = data.length; + let hash = 0; + let length = data.length; - for (var i = 0; i < length; i++) { - var char = data.charCodeAt(i); + for (let i = 0; i < length; i++) { + let char = data.charCodeAt(i); hash = ((hash << 5) - hash) + char; // Convert to 32-bit integer From 03cdff78dfa3f73fdb7db89d59f24d05dfc56401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Val=C3=A8re=20Pique?= Date: Fri, 6 Jan 2017 12:58:11 +0100 Subject: [PATCH 3/3] We should use constant for this exemple and let instead of var --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e4a5904d..6182211d 100644 --- a/README.md +++ b/README.md @@ -1810,11 +1810,11 @@ they want. The point is, no matter what you all choose, just be consistent. **Bad:** ```javascript -var DAYS_IN_WEEK = 7; -var daysInMonth = 30; +const DAYS_IN_WEEK = 7; +const daysInMonth = 30; -var songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude']; -var Artists = ['ACDC', 'Led Zeppelin', 'The Beatles']; +let songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude']; +let Artists = ['ACDC', 'Led Zeppelin', 'The Beatles']; function eraseDatabase() {} function restore_database() {} @@ -1825,11 +1825,11 @@ class Alpaca {} **Good**: ```javascript -var DAYS_IN_WEEK = 7; -var DAYS_IN_MONTH = 30; +const DAYS_IN_WEEK = 7; +const DAYS_IN_MONTH = 30; -var songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude']; -var artists = ['ACDC', 'Led Zeppelin', 'The Beatles']; +let songs = ['Back In Black', 'Stairway to Heaven', 'Hey Jude']; +let artists = ['ACDC', 'Led Zeppelin', 'The Beatles']; function eraseDatabase() {} function restoreDatabase() {}