léo balter: javascript idiomático

26
JS Idiomático, Convenções e Polêmicas. Leo Balter ( @leobalter ) 2013-09-25 JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7 1 de 26 27/09/13 01:05

Upload: imasters

Post on 29-Jun-2015

934 views

Category:

Technology


1 download

DESCRIPTION

7Masters JavaScript | Léo Balter

TRANSCRIPT

Page 1: Léo Balter: JavaScript Idiomático

JS Idiomático,Convenções ePolêmicas.Leo Balter

(@leobalter)

2013-09-25

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

1 de 26 27/09/13 01:05

Page 2: Léo Balter: JavaScript Idiomático

Maiordificuldade daprogramação

"There are only two hardthings in ComputerScience: cacheinvalidation and namingthings."

— Phil Karlton

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

2 de 26 27/09/13 01:05

Page 3: Léo Balter: JavaScript Idiomático

Na vida real

"There are only two hardthings in ComputerScience: cacheinvalidation, namingthings, and off-by-oneerrors". *

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

3 de 26 27/09/13 01:05

Page 4: Léo Balter: JavaScript Idiomático

you give vars a badname.#bonjoviprogramming

— @leobalter

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

4 de 26 27/09/13 01:05

Page 5: Léo Balter: JavaScript Idiomático

JavaScript deformaConsistente eIdiomática

var foo = "";

var bar = "";

var qux;

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

5 de 26 27/09/13 01:05

Page 6: Léo Balter: JavaScript Idiomático

var foo = "",

bar = "",

qux;

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

6 de 26 27/09/13 01:05

Page 7: Léo Balter: JavaScript Idiomático

var foo = ""

var bar = ""

var qux

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

7 de 26 27/09/13 01:05

Page 8: Léo Balter: JavaScript Idiomático

Códigoconsistente econsciente

var foo = ""

bar = ""

qux

bar será tratado comoglobal e qux vai darerro de referência sefor undefined.

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

8 de 26 27/09/13 01:05

Page 9: Léo Balter: JavaScript Idiomático

Law of codestyleconsistency

"Todo código emqualquer aplicaçãodeve parecer como setivesse sido escrito poruma única pessoa,independentemente dequantas pessoastenham contribuído."

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

9 de 26 27/09/13 01:05

Page 10: Léo Balter: JavaScript Idiomático

Assim que vocêassume o estilo de umcódigo ele deve setornar lei e todosdevem seguir o mesmoestilo.

"Argumentos além doestilo são inúteis. Devehaver um guia deestilo, e você devesegui-lo". RebeccaMurphey

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

10 de 26 27/09/13 01:05

Page 11: Léo Balter: JavaScript Idiomático

O que deve terem um guia deestilo de JS?

Whitespace

Sintaxe bonita

Nomeação de objetos

Comentários

Idiomas

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

11 de 26 27/09/13 01:05

Page 12: Léo Balter: JavaScript Idiomático

Padrões de projeto

...

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

12 de 26 27/09/13 01:05

Page 13: Léo Balter: JavaScript Idiomático

Whitespace

Tabs ou espaços?

Identação de quantosespaços?

linebreaks

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

13 de 26 27/09/13 01:05

Page 14: Léo Balter: JavaScript Idiomático

Sintaxeelegante

Quem curte o ASI?

Áspas simples ouduplas?

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

14 de 26 27/09/13 01:05

Page 15: Léo Balter: JavaScript Idiomático

Nomeação deobjetos

function q(s) {

return document.querySelectorAll(s);

}

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

15 de 26 27/09/13 01:05

Page 16: Léo Balter: JavaScript Idiomático

function query( selector ) {

return document.querySelectorAll( selector )

}

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

16 de 26 27/09/13 01:05

Page 17: Léo Balter: JavaScript Idiomático

Comentários

// retorna elementos de acordo com o seletor p

function query( selector ) {

return document.querySelectorAll( selector )

}

function query( selector ) {

return document.querySelectorAll( selector )

}

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

17 de 26 27/09/13 01:05

Page 18: Léo Balter: JavaScript Idiomático

Idiomas

// renvoie les éléments en fonction de la dern

function requete( selector ) {

return document.querySelectorAll( selector )

}

Se você entendeFrancês e Inglês,parabéns.

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

18 de 26 27/09/13 01:05

Page 19: Léo Balter: JavaScript Idiomático

Padrões deProjeto

Classes

Paradigmas(programaçãofuncional)

etc

(function( global ) {

var Module = (function() {

var data = "secret";

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

19 de 26 27/09/13 01:05

Page 20: Léo Balter: JavaScript Idiomático

return {

getData: function() {

return data;

},

setData: function( value ) {

return ( data = value );

}

};

})();

global.Module = Module;

})( this );

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

20 de 26 27/09/13 01:05

Page 21: Léo Balter: JavaScript Idiomático

Ferramentas

Plato, JSHint, JSPerf,JSBin

Grunt, Yeoman,Bower

QUnit, Jasmine,Mocha

Exemplo: "Comocontribuir com umprojeto".

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

21 de 26 27/09/13 01:05

Page 22: Léo Balter: JavaScript Idiomático

Qual o melhorguia de estilosde JS?

Nenhum.

Não há bala de prata.O melhor estilo é o quea sua equipe melhor seadapta. A flexibilidadedo JS deve ser usada aoseu favor.

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

22 de 26 27/09/13 01:05

Page 23: Léo Balter: JavaScript Idiomático

Não tente estabeleceruma única forma paraoutros projetos quenão são seus. Temosmindset diferentes.

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

23 de 26 27/09/13 01:05

Page 24: Léo Balter: JavaScript Idiomático

JS Style Guides

Idiomatic.js

Google

jQuery

Airbnb

Se não quiser seguiralgum, crie um pra seuprojeto e torne elemandatório.

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

24 de 26 27/09/13 01:05

Page 25: Léo Balter: JavaScript Idiomático

Obrigado!

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

25 de 26 27/09/13 01:05

Page 26: Léo Balter: JavaScript Idiomático

JS Idiomático, Convenções e Polêmicas. http://jsbin.com/iGuyixo/7

26 de 26 27/09/13 01:05