Boas Práticas, Práticas !
        Augusto Pascutti
Porquê?
Como você encara uma
     mudança?
Assim ?
Deveria ser assim !
Não convenci ?!
E se ...
quem fosse mexer ...
no seu código,
soubesse onde você mora?
E fossem esses caras !?
Para quê ?
Fácil de ler
Fácil de modificar
Fácil de melhorar
Fácil de corrigir
+ phpinga !
Coisas erradas ...
Use a última versão
Ame os erros
ini_set(‘display_errors’,’On’);
error_reporting()
E_NOTICE
E_STRICT
E_ALL
- Tenha objetivos
     - Mensurar melhoras




Saiba pra onde ir
Tenha objetivos
Mensure suas melhoras
O tempo não pára
- Roberta Close
              - Aparências enganam




       - Um belo design não esconde um código ruim;
       - Um dia ele falha




Não julgue o livro pela capa
As aparências enganam
Código ruim, é ruim !
Não importa o design ...
Dèjá Vu
ou CTRL+C & CTRL+V
ou MGTC
- Um framework não torna você melhor




O problema é você
Certas coisas nunca mudam
Conhecimento é conhecimento
Quanto mais queijo
Menos queijo !
É conhecimento na faixa !




Software Livre
Aprenda com código de outros
Contribua ...
Você aprende mais !
Ao repetir uma tarefa, você vai fazê-la melhor




    Pelo menos digitar melhor você vai




Kumon funciona
Arte da repetição
Cada vez melhor
Pelo menos a digitação
História do “opinião de peso”




Engordem
Filósofos são gordos.
Preferem estudar a se exercitar
Por isso têm “Opinião de Peso”
Não acredite em tudo.
Papai Noel não existe
Nem o coelhinho da Páscoa
Boas Práticas Gerais
RTFM
DRY
Don’t Repeat Yourself
KISS
YAGNI
Less is More
Simples é difícil !
< 80 colunas
< 4 condicões aninhadas
< 4 argumentos
Mão na Massa
Escolha um paradigma
Estruturado
Não é Spaguetti
Orientação a Objetos
Escolha uma ferramenta
Domine a ferramenta
Netbeans
Padronize
Encoding
- 80 colunas
 - Máximo 120
 - Tab ou Espaço




Identação
- Arquivos;
  - Variaveis;
  - Classes;
  - Métodos;

  - Cadê minha função ?




Nomenclatura
- Espaço em condições
- { Chaves }




  Código
Existentes: Pear ou Zend
Configuração do PHP
register_globals = off
output_buffering = on
magic_quotes_gpc = off
allow_url_fopen = off
Não documente
Código ruim ...
comentado.
Continua sendo ruim
PHPDoc.org
Esqueça a Performance
Isso se arruma
A qualidade do código não
Hardware é mais barato
Bom código se muda rápido
Nunca esqueça da Segurança
Filtre TODO input
*_escape_string()
Filtre TODO output
htmlentities()
Quanto menos INPUT/OUTPUT
melhor !
.htaccess
Output Buffer
Refatore != Funcionalidade
Nova funcionalidade
Melhora existentes
Refatore
Refatore de novo !
Porquê ?
Ao refatorar você lê !
Entende mais o programa
Melhora estrutura do código
Melhora leitura para outros
Previne câncer !
Refatorar é bom ?
Necessário !!!!
Cabeça do Homem x Cabeça da Mulher




 Encapsule
Complexidade x Modularidade
Especialização
Ninguém sabe tudo ...
HTML
     CSS
     JS
 Requisições
Regras Negócio
    Banco
Como ?
Dividir e conquistar !
Funções/Classes
Lembre-se:
Uma função recebe ...
e retorna !
Solução genérica !
Não ser vem só pra layout: menu,
     cabeçalho e banco




Arquivos de Include
menu.php
         rodape.php




Não deveriam ser templates
functions.inc.php




Não deveriam ser genéricos
do mesmo tipo, por favor




Agrupam funções
Como Classes !
Tá tudo ferrado, e agora ?
Estabeleça os padrões
Encapsule includes
Encapsule URLs
Encapsule todo código antigo
Migre aos poucos
Augusto Pascutti


augusto@phpsp.org.br
Twitter: augustohp
gtalk: augusto.hp

Boas Práticas, Práticas !