SlideShare a Scribd company logo
1 of 28
Download to read offline
Código !
legado
http://xkcd.com/844/
Projetos!
Fast-Food
• Inconsistência de código
• Arquitetura fraca
• Onde no mundo está a documentação
(e a Carmem Sandiego)
• Sem testes
• Tartaruga na árvore
Sintomas de código legado
Inconsistência
;
Always code as if the person who ends
up maintaining your code is a violent
psychopath who knows where you live.
http://c2.com/cgi/wiki?CodeForTheMaintainer
there are two hard things in computer science: cache
invalidation, naming things, and off-by-one errors.
http://martinfowler.com/bliki/TwoHardThings.html
https://github.com/rwaldron/idiomatic.js
http://contribute.jquery.org/style-guide/js/
Arquitetura Fraca
https://github.com/miketaylr/Snort/blob/master/snort.yml
Snort
https://gist.github.com/leobalter/9771910
Revealing Module Pattern
http://christianheilmann.com/2007/08/22/again-with-the-module-pattern-reveal-something-to-the-world/
var myFoo = function(){
var foo = '';
function bar(){ /* … */ }
function setFoo(newFoo) { /* … */ }
function getFoo() { /* … */ }
return {
set: setFoo,
get: getFoo
}
}();
Documente seu código
https://github.com/millermedeiros/mdoc
Testes
" L E G A C Y C O D E I S
C O D E W I T H O U T
T E S T S "
M I C H A E L F E AT H E R S - W O R K I N G
E F F E C T I V E LY W I T H L E G A C Y C O D E
M U LT I P L E
E N V I R O N M E N T S
H E L L
T O D O S O S B R O W S E R S
N O D E ,
D I S P. M Ó V E I S ,
E T C …
V E R S Õ E S D E
B R O W S E R S
Firefox Chrome Opera Safari IE 8 IE 9 IE 10 IE 11
Firefox Mobile Chrome p/ Android iOS Sarari Opera Mini
Windows Mobile
Funcionais
Integração
A/B
Unitários
…
Onde dói mais se o seu sistema falhar?
C R Í T I C O
C O M P L E X O
https://github.com/rmurphey/js-assessment
Além dos testes…
O que está testado?
• quantas funções?
• quantos blocos?
• quantas linhas?
• quantos statements?
Cobertura
WTF é integração contínua?
Tartaruga na árvore
// What is this I don't even
if (obj.message === '[object Object], undefined:undefined') { return; }
https://github.com/gruntjs/grunt-contrib-qunit/issues/58

More Related Content

Similar to Insustentavel js

Seja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccodeSeja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccodes4nx
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011Leonardo Balter
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013javamanrj
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Marco Antonio Maciel
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDeviceRicardo Rufino
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Felipe Queiroz
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Bruno Rocha
 
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012Rogerio Prado de Jesus
 
Simples pelo simples google android com robo guice
Simples pelo simples   google android com robo guiceSimples pelo simples   google android com robo guice
Simples pelo simples google android com robo guiceDiogo Souza
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraCDS
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareFábio Nogueira de Lucena
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonIgor Sobreira
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverStefan Teixeira
 
Arduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoArduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoÁlvaro Justen
 
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Alex Piaz
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livreDiego Santos
 
Html5 para estudantes universitários
Html5 para estudantes universitáriosHtml5 para estudantes universitários
Html5 para estudantes universitáriosPaullo Norato
 

Similar to Insustentavel js (20)

Seja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccodeSeja burro e preguiçoso. A criação do synccode
Seja burro e preguiçoso. A criação do synccode
 
WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011WTF Javascript - FrontInRio 2011
WTF Javascript - FrontInRio 2011
 
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
Construindo aplicações Desktop com HTML, CSS e JS - Rio.JS Conference 2013
 
Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011Robótica e PHP com Arduino - PHPn' Rio 2011
Robótica e PHP com Arduino - PHPn' Rio 2011
 
ArduinoDay 2015 - OpenDevice
ArduinoDay 2015 -  OpenDeviceArduinoDay 2015 -  OpenDevice
ArduinoDay 2015 - OpenDevice
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!Django: desenvolvendo aplicações web de maneira simples e rápida!
Django: desenvolvendo aplicações web de maneira simples e rápida!
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
 
Simples pelo simples google android com robo guice
Simples pelo simples   google android com robo guiceSimples pelo simples   google android com robo guice
Simples pelo simples google android com robo guice
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de software
 
Vivendo de hacking
Vivendo de hackingVivendo de hacking
Vivendo de hacking
 
Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
 
Arduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremoArduino + Python: produtividade ao extremo
Arduino + Python: produtividade ao extremo
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livre
 
Html5 para estudantes universitários
Html5 para estudantes universitáriosHtml5 para estudantes universitários
Html5 para estudantes universitários
 

More from Leonardo Balter

Guia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open SourceGuia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open SourceLeonardo Balter
 
Potencial de Vendas do e-Commerce no Frontend - WOB2012
Potencial de Vendas do e-Commerce no Frontend - WOB2012Potencial de Vendas do e-Commerce no Frontend - WOB2012
Potencial de Vendas do e-Commerce no Frontend - WOB2012Leonardo Balter
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebLeonardo Balter
 
Receita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndReceita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndLeonardo Balter
 
Realize mais com HTML 5 e CSS 3 - EDTED / RS
Realize mais com HTML 5 e CSS 3 - EDTED / RSRealize mais com HTML 5 e CSS 3 - EDTED / RS
Realize mais com HTML 5 e CSS 3 - EDTED / RSLeonardo Balter
 
EDTED BH - HTML 5 e CSS 3 - Julho de 2011
EDTED BH - HTML 5 e CSS 3 - Julho de 2011EDTED BH - HTML 5 e CSS 3 - Julho de 2011
EDTED BH - HTML 5 e CSS 3 - Julho de 2011Leonardo Balter
 
EDTED SP - HTML 5 e CSS 3 - Junho de 2011
EDTED SP - HTML 5 e CSS 3 - Junho de 2011EDTED SP - HTML 5 e CSS 3 - Junho de 2011
EDTED SP - HTML 5 e CSS 3 - Junho de 2011Leonardo Balter
 
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJRealize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJLeonardo Balter
 
HTML 5 - Semana da Computação - UFF
HTML 5 - Semana da Computação - UFFHTML 5 - Semana da Computação - UFF
HTML 5 - Semana da Computação - UFFLeonardo Balter
 

More from Leonardo Balter (13)

Unit testing
Unit testingUnit testing
Unit testing
 
GruntJS + Wordpress
GruntJS + WordpressGruntJS + Wordpress
GruntJS + Wordpress
 
Guia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open SourceGuia de Sobrevivência JS no mundo Open Source
Guia de Sobrevivência JS no mundo Open Source
 
Potencial de Vendas do e-Commerce no Frontend - WOB2012
Potencial de Vendas do e-Commerce no Frontend - WOB2012Potencial de Vendas do e-Commerce no Frontend - WOB2012
Potencial de Vendas do e-Commerce no Frontend - WOB2012
 
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open WebNovo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
Novo Cinto de Utilidades do Desenvolvedor JavaScript, WebAPIs e Open Web
 
Extreme Web Performance
Extreme Web PerformanceExtreme Web Performance
Extreme Web Performance
 
temp EWP
temp EWPtemp EWP
temp EWP
 
Receita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front EndReceita do Sucesso no Mercado Front End
Receita do Sucesso no Mercado Front End
 
Realize mais com HTML 5 e CSS 3 - EDTED / RS
Realize mais com HTML 5 e CSS 3 - EDTED / RSRealize mais com HTML 5 e CSS 3 - EDTED / RS
Realize mais com HTML 5 e CSS 3 - EDTED / RS
 
EDTED BH - HTML 5 e CSS 3 - Julho de 2011
EDTED BH - HTML 5 e CSS 3 - Julho de 2011EDTED BH - HTML 5 e CSS 3 - Julho de 2011
EDTED BH - HTML 5 e CSS 3 - Julho de 2011
 
EDTED SP - HTML 5 e CSS 3 - Junho de 2011
EDTED SP - HTML 5 e CSS 3 - Junho de 2011EDTED SP - HTML 5 e CSS 3 - Junho de 2011
EDTED SP - HTML 5 e CSS 3 - Junho de 2011
 
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJRealize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
 
HTML 5 - Semana da Computação - UFF
HTML 5 - Semana da Computação - UFFHTML 5 - Semana da Computação - UFF
HTML 5 - Semana da Computação - UFF
 

Insustentavel js