O documento discute anti-padrões de programação PHP, como fazer coisas erradas e evitar. Ele explica o que são anti-padrões e por que devemos conhecê-los, e discute exemplos específicos como "spaghetti code" e "overdesign". O documento encoraja os desenvolvedores a pensarem em segurança, usar frameworks e seguir padrões comprovados.
2. Sobre mim
• Theoziran Lima
– Análise e Desenvolvimento de Sistemas
(Faculdade iDEZ)
– Analista de sistemas (Acade)
– Desenvolvedor PHP (Shoprizer)
– Colunista iMasters
... e eu não sou o carinha da capa...
9. Não existe isso, temos os padrões para resolver
problemas específicos sendo tratados de forma
genérica.
• Padrões de criação
– Factory
– Singleton
• Padrões estruturais
– Adapter
– Bridge
... vamos voltar aos anti-patterns
11. PHP é fácil, também é mais fácil
cometer erros
• Quanto mais fácil a linguagem, mais fácil fazer
gambiarras;
• Por ser fácil, muitas pessoas desenvolvem
sem ter nenhuma base (conceitos) de
desenvolvimento de software;
• O desenvolvedor se sente tentado a resolver o
problema de forma mais rápida.
12. PHP é fácil, também é mais fácil
cometer erros
• Invasão de camadas, quando se está
utilizando um MVC, ou pelo menos tentando.
13. “Nenhuma linguagem, framework,
impede do desenvolvedor fazer
gambiarra” Felipe Ribeiro, “PHP não é coisa de moleque”
Esqueceram que somos os mestres das soluções?
17. Estilos de codificação
• Seu código não deve ser percebido dentro do
sistema;
• Sempre desenvolva com E_STRICT e E_NOTICE
ativos;
• Filtre suas entradas e escape suas saídas;
• Quando possível utilize type-casts em suas
funções ou métodos.
18. Use com cuidado
• $_REQUEST
• __get, __set, __isset, __unset
• __call, __callStatic
• __autoload
• @
• <?=
23. DIY – Do it yourself
• Desperdício de tempo
– Desenvolvimento
– Testes
– Documentação
– Manutenção
• Criar bus desnecessários
24. Overdesign
• Limite-se a fazer o que o cliente deseja, ou ao
que foi requisitado.
• Não fique refazendo o sistema do zero todas
vez que cometer um erro.
25. Overdesign
• Quanto mais complexo for sua arquitetura:
– O código será mais complexo;
– Mais bugs você vai ter;
– Mais tempo de desenvolvimento irá custar;
– A probalidade o projeto falhar é alta.
26. PHP não é Java, C++, Python, Ruby on
Rails
<?php
class String{
private $str;
public function __construct($str){
$this->str = $str;
}
public function __toString(){
return $this->str;
}
}