Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Boas práticas front-end

Boas práticas front-end

guilherme

July 05, 2012
Tweet

More Decks by guilherme

Other Decks in Programming

Transcript

  1. 1.  Separação da apresentação, conteúdo e comportamento. 2. Marcação deve

    ser bem escrita, semanticamente correta e imprenscindivelmente válida. 3. Javascript deve melhorar a experiência progressivamente. guilhermepontes.com
  2. Eu, ____, juro que vou TENTAR (e conseguir #ftw) a

    seguir as dicas aqui propostas. guilhermepontes.com
  3. Compreensão e legibilidade guilhermepontes.com •  Escolha da língua para desenvolvimento.

    •  Variáveis, métodos, classes e comentários. •  Espaços, quebras de linhas e caracteres ASCII. •  Indentação.
  4. Boas práticas de Markup guilhermepontes.com •  HTML5 BoilerPlate. •  Doctype.

    (<!doctype html>) •  Codificação de Caracteres. (<meta charset=“utf-8” />)
  5. Boas práticas de Markup HTML guilhermepontes.com •  Use o elemento

    <p> para paragráfos ao invez de vários <br />. •  Faça uso do <dl> e <blockquote>, apropriadamente. •  Itens na lista de um form devem ser sempre usados <ul>, <ol> ou <dl>, nunca o conglomerado de <div> ou <p>. •  Use corretamente o <label> com o <input>, ele impacta muito na usabilidade, e este elemento deve sempre estar com o css cursor; pointer, para mostrar que o elemento é clicável. •  Nunca use os atributos de tamanho em <input>. •  Use um comentário no final de cada <div> ou elemento de bloco. •  Tabelas não devem ser usadas para layout. •  Usar microdata e microformats •  Usar corretamente os elementos <thead>, <tbody>, <th> em forms.
  6. Dicas CSS guilhermepontes.com •  Não usar o @import •  Não

    fazer CSS INLINE via HTML. •  Usar normalize.css ou algum reset. •  Entender as especificações de seletores. •  Evitar seletores que gastam muito processamento. •  Validar o código.
  7. Boas práticas de CSS guilhermepontes.com •  Definir padrões para elementos

    das páginas •  Usar classes em vez de IDs. •  Combinar seletores. •  Usar a unidade PX. •  Evitar o uso de Hacks •  IE6: div { _color: blue; } •  IE7: div { *color: blue; } •  IE8: div { color: blue\9; } •  Usar a técnica de sprites
  8. Boas práticas de textos e cabeçalhos guilhermepontes.com •  Em textos,

    usar line-height: 1.2x maior que a fonte. •  Os cabeçalhos devem ter ordem hierárquica no estilo. •  Usar border-bottom, junto com text-decoration: none, para efeitos em links. •  Usar font-face, ao invés de imagens. •  Faça bom uso do CSS3.
  9. Dicas Javascript guilhermepontes.com •  99% do código JS deve estar

    em arquivos externos, e devem ser inseridos no final da tag <body>. •  Não use document.write(); •  Todas variáveis booleanas devem começar com “is”. •  Exemplo: var isValid = (test.value >= 4 && test.sucess); •  Não minifique o código manualmente, a única excessão é o tradicional i do loop for. •  Arquivos de configuração devem estar no topo do código. •  Esforce-se para criar funções que podem ser generalizadas. •  Comente seu código, isso ajuda na descoberta sobre o funcionamento do código.
  10. Padrões para um melhor Javascript guilhermepontes.com •  Escreva códigos sustentáveis.

    •  Não use eval(), eval is evil. •  Para conversão de números use parseInt(); •  Arquivos de configuração devem estar no topo do código. •  Abra e feche as chaves no local adequado. •  Use o padrão CamelCase para “Namespaces” e “Classes”. •  Escreva comentários. •  Evite usar o void(), with, continue.
  11. Delegação de eventos guilhermepontes.com •  jQuery on() •  jQuery live()

    •  Ex: •  $(“button”).on(“click hover dblclick”, handler);
  12. Variáveis guilhermepontes.com Perceptool.Utils = { config : video : {

    width: 450, height: 300 }, image : { width: 250, height: 250 } } var pct = Perceptool.Utils; pct.config.image.width; //250
  13. Métodos guilhermepontes.com Perceptool.Utils = { floorNumber : function( n )

    { return ~~n; }, showMessage : function( msg ) { return alert( msg ); } } var pct = Perceptools.Utils; pct.showMessage( pct.floorNumber( 6.3 ) ); //6
  14. Separando eventos de funcionalidade guilhermepontes.com Perceptool.Utils = { bind :

    function() { $( “#item” ).on( “dblclick”, this.remove ); }, remove : function() { $( this ).slideUp( “slow” ); } } Perceptool.Utils.bind();
  15. Inicialização e cache de elementos guilhermepontes.com Perceptool.Utils = { init

    : function() { this.cache(); this.bind(); }, cache : function() { this.$elem = $( “.elem” ); }, bind : function() { this.$elem.on( “click”, handler ); } handler: function() { //do something } } Perceptool.Utils.init();
  16. Métodos e variáveis privadas guilhermepontes.com Perceptool.Lib = (function(){ var foo

    = false; //variavel privada var bar = function( i ) { return i; } //metodo privado return { app : function(){ alert( bar( foo ) ); } } })(); Perceptool.Lib.app(); //false Perceptool.Lib.bar(); //TypeError: Object #<Object> has no method 'bar'
  17. Tá, você mostrou o código e não falou nada com

    nada. (Eu sei que você pensou nisso! MWAHAHAHA) guilhermepontes.com
  18. SCALABLE LOCALIZED var Modulo = ( function ( window, document,

    $ ) {! "// ….! })( window, document, jQuery );!
  19. guilhermepontes.com Perceptool.Utils.fn = function( param ) { // do something

    } Ou... Perceptool.Lib.prototype.foo = function( bar ) { // … }