JavaScript das Ruas
Tudo o que você não deve fazer
Dan Vitoriano
@dnvtrn
@dnvtrn
BEM LOKO
DOMINA
NINGUÉM SEGURA
ATALHOS
Que que tá
pegando?
@raphamorims
@pokemaobr
Iniciantes
PERIGO!
Esse dia foi loko….
PESQUISA
O que você faz em
JavaScript que te
envergonha?
O que os outros fazem
com JavaScript que
você considera ruim?
Qual a coisa mais bonita que
uma pessoa desenvolvedora
pode fazer em JavaScript mas
geralmente não faz?
BAD PRACTICES
BAD PARTS
GOOD PARTS
VAI MALANDRA
Callback Hell
var bagulhos;
jQuery no meio dos
bagulho
Kilômetros de JavaScript em um único arquivo
If ternário sem dó
bagulhos ? true :
bagulhos === 'Kondzilla' ? true :
bagulhos !== 'Anitta' ? true : null
ZUADO
The Bad Parts
Tipos
console.log(5 == "5"); // true
console.log(25 == "0x19"); // true
console.log(1 == true); // true
console.log(0 == false); // true
console.log(2 == true); // false
Números
> console.log(0.1 + 0.2);
Misericórdia…
= 0.30000000000000004
Variáveis Globais
function foobar() {
var bar = 10;
//
// [...Code...]
//
baz = 20; // Typo. "baz" is now a global variable.
}
undefined != null
undefined != null
Adição e
Concatenação
var x = 10;
var y = 5;
var z = x + y;
console.log(z);
 
15
var x = 10;
var y = "5";
var z = x + y;
console.log(z);
 
"105"
var x = 10;
var y = 5;
var z = x - y;
console.log(z);
 
5
var x = 10;
var y = "5";
var z = x - y;
console.log(z);
 
5
var x = "5";
var y = 5;
var z = x - y;
console.log(z);
 
5
var x = "10";
var y = "5";
var z = x - y;
console.log(z);
 
5
PARTES
ZICA
Prototype
__proto__
Construtores
Polimorfismo
Objetos
Tem métodos
Segue o protótipo
Facilita os testes
Destructuring
function example(metadata) {
var englishTitle = metadata.title,
localeTitle = metadata.translations[0].title;
…; // use englishTitle and localeTitle
}
function example({title: englishTitle, translations: [{title: localeTitle}]}) {
…; // use englishTitle and localeTitle
}
Código Comentado
class Tumbalatum extends TaTumTum.Component {
static propTypes = {
handleSubmit: PropTypes.func
};
handleSubmit = () => {};
render(){
return(
<div>Cê acredita?!</div>
)
}
}
class Tumbalatum extends TaTumTum.Component {
static propTypes = {
handleSubmit: PropTypes.func
};
/* istanbul ignore next */
handleSubmit = () => {};
render(){
return(
<div>Cê acredita?!</div>
)
}
}
Usar o browser pra
debugar os bagulhos
vamos pras idea…
Referências
• https://medium.com/@Rewieer/javascript-the-bad-parts-and-how-to-avoid-them-1a7c9bc5a0dd
• https://whydoesitsuck.com/why-does-javascript-suck/
• https://www.w3schools.com/js/js_mistakes.asp
• https://enmascript.com/articles/2019/09/20/two-exceptional-use-cases-for-the-spread-operator-you-may-
not-know-of
• https://talyssonoc.github.io/2015/11/23/JavaScript-adicione-acucar-a-gosto-e-pare-de-reclamar/
• http://nodebr.com/javascript-nao-e-bagunca/
• http://programadorobjetivo.co/7-problemas-de-estilo-de-codigo-em-javascript/
• https://medium.com/tableless/3-problemas-em-javascript-para-resolver-com-a-
especifica%C3%A7%C3%A3o-spread-operator-c5db0b5b1f6b
• https://medium.com/@madasamy/15-javascript-concepts-that-every-nodejs-programmer-must-to-
know-6894f5157cb7
VAMOS PRAS IDEIAS!
(Obrigado!)
@dnvtrn
@dnvtrn

JavaScript das Ruas