Projeto de Web 2 - GitHub Pages: https://pmslomp.github.io/Blackjack-DW2/
QUALIDADE DO CÓDIGO
- Usar um Style Guide - apresentar o uso de pelo menos 10 regras do style escolhido (sugerido AirBnb)
- Require capitalized names for constructor functions
- Prohibit use of explicitly undeclared variables*
- Warn when variables are defined but never used
- Enforce tab width of 2 spaces
- Force all variable names to use either camelCase
- Usar um lint - mostrar a correção de pelo menos 5 problemas informados pelo lint (sugerido JSHint - usar o arquivo .jshintrc disponível no moodle)
- aspas duplas por aspas simples
- 'use strict'
- declaração de variável antes do uso (card.js)
- término com ';'
- uso de '===' ou '!=='
- Usar strict mode
- Usar Module Pattern
- Usar pasta assets e subpastas resources e libraries para organizar o código
- Usar let ao invés de var
- Nomes de arquivos minúsculos e separados por hífen (dashed-case)
CAIXAS DE DIÁLOGO
- prompt (main.js - linha 7)
- alert (main.js - linha 28)
- confirm (opinion.js - linha 59)
TEMPORIZADORES
- setInterval (interface.js - linha 123)
- setTimeout (main.js - linha 94)
FUNÇÕES
- Função anônima com argumento (deck.js - linha 17)
- Função anônima sem argumento (main.js - linha 115)
- Função anônima com retorno (deck.js - linha 17)
- Função auto-executável (main.js)
- Função com nome (deck.js - linha 20)
- Função aninhada/local - declarar uma função dentro de outra (deck.js - linha 17/20)
- Passagem de uma função como parâmetro (main.js - linha 16)
- Função Flecha - Arrow Function (card.js - linha 1)
EVENTOS
- Evento de carregamento do documento (onload) (main.js - linha 16)
- Evento de movimento do mouse (index.js - linha 4 e 8)
- Evento de teclado - usar charCode ou keyCode (opinion.js - linha 23)
- Eventos de formulário - onfocus e onblur (opinion.js - linha 38 e 41)
- Imprimir alguma propriedade do objeto event recebido como parâmetro (opinion.js - linha 26)
ACESSO AOS ELEMENOS DOM DO HTML
- Via acesso direto pelo id do elemento HTML (interface.js - linha 101)
- Via getElementByID() (index.js - linha 3)
- Via getElementsByName() (scoreboard.js - linha 3)
- Via getElementsByTagName() (interface.js - linha 99)
- Via seletores CSS usados na função querySelector() ou querySelectorAll() (interface.js - linha 63)
TRATADORES DE EVENTO
- Especificar o tratador de evento inline (opinion.html - linha 22)
- Especificar o tratador de evento no carregamento da página HTML no modo tradicional - no onload (opinion.js - linha 6)
- Especificar o tratador de evento no carregamento da página HTML com a função addEventListener - no onload (main.js - linha 16)
- Usar o operador this em funções tratadoras de eventos (main.js - linha 52/56)
FORMULÁRIO
- Validação de formulário com onsubmit usando os métodos tradicionais (opinion.js - linha 87)
- Validação de formulário com HTML5 API
- Customizar as mensagens nos balões de mensagem (opinion.js - linha 69)
- Usar os atributos de validação dos inputs (opinion.js - linha 91)
- Usar expressões regulares (opinion.html - linha 24)
- Ler e escrever em elementos input com a propriedade value (opinion.js - linha 26 e 98)
- Alterar o conteúdo de elementos div ou p com a propriedade innerHTML ou textContent (scoreboard.js - linha 28)
- Manipulação de elemento de listagem, como checkbox, radio ou select (opinion.html - linha 27)
- Acesso aos elementos de um formulário via hierarquia (caminho) de objetos, ou seja, array forms e elements (opinion.js - linha 22)
OBJETOS NATIVOS
- Usar pelo menos 3 métodos de manipulação de array
- (deck.js - linha 22 / length)
- (deck js - linha 32 / push)
- (hand.js - linha 13 / shift)
- Usar laço de repetição (for..in ou for..of ou forEach) (deck.js - linha 21 / for in)
- Usar pelo menos 3 métodos para manipulação de string
- (scoreboard.js - linha 19 / charAt)
- (scoreboard.js - linha 20 / toUpperCase)
- (scoreboard.js - linha 21 / replace)
- (scoreboard.js - linha 24 / substring)
OBJETOS
- Criar objeto usando função construtora ou notação literal (scoreboard.js - linha 31)
- Usar herança prototipal (opinion.html - linha 53)
JQUERY
- Uso de seletores CSS - id, classe e tag
- (index.js - linha 15)
- (index.js - linha 17)
- (opinion.js - linha 13)
- Uso de seletores hierárquicos estáticos - ancestral/descendente, pai/filho, anterior/próximo
- Uso de seletores hierárquicos dinâmicos - parent/children/next
- Efeitos fade ou slide (interface.js - linha 121)
- Especificar o tratador de algum evento via jQuery (index.js - linha 8)
- Manipulação do CSS via função css() e addClass()/removeClass()
- Manipulação do conteúdo de um input e div usando jQuery
- (index.js - linha 13)
- (opinion.js - linha 13)
WEB STORAGE
- LocalStorage ou SessionStorage
- (main.js - linha 21)
- (opinion.js - linha 8)
- (scoreboard.js - linha 18)
- Leitura e escrita de dados simples
- (main.js - linha 21 / getItem)
- (opinion.js - linha 8 / .name)
- (scoreboard.js - linha 18 / setItem)
- Leitura e escrita de JSON (opinion.js - linha 13 e 57)