Eu estava trabalhando em uma lista de "pecados" para programadores PHP, mas o Reinhold Weber se adiantou. Melhor, porque a lista dele é bem maior que a minha :)
Resolvi fazer uma tradução livre. Vamos lá:
Isto é o que eu prefiro chamar de minha "lista de programação da vergonha".
Embora tendo uma educação universitária formal com aulas sobre engenharia de software, arquitetura de software empresarial e design de banco de dados eu tenho sido culpado por todas essas coisas uma vez ou outra.
A lista é completamente subjetiva e baseada no Eclipse.
Você é um reles programador PHP se:
- Não comentar seu código apropriadamente com algo como phpDoc.
- Não ver a necessidade e/ou benefício de uma boa IDE de programação
como Zend Studio ou Eclipse PDT. - Nunca ter usado uma forma de controle de versão como Subclipse.
- Não adotar algum padrão de código/nome e convenção geral e insistir com eles, pelo menos, ao longo de todo o projeto.
- Não usar uma metodologia consistente.
- Não escapar e/ou propriamente validar entradas ou consultas SQL.
- Não planejar sua aplicação minuciosamente antes de começar a codificar.
- Não usar desenvolvimento guiado a testes (TDD).
- Não programar e testar com error reporting on.
- Não ver os benefícios de um debugger.
- Não refatorar seu código.
- Não separar camadas diferentes usando algo como MVC.
- Não saber o significado de: KISS, DRY, MVC, OOP, REST.
- Não retornar conteúdo mas sim echo ou print de suas funções
ou classes. - Nunca ter visto a vantagem de testes unitários ou teses em geral.
- Retornar HTML, não dados, string ou objetos.
- Mensagens e parâmetros de configuração hard code.
- Não otimizar suas consultas SQL.
- Não usar __autoload.
- Não admitir manipulação de erros inteligente.
- usar $_GET no lugar de $_POST em qualquer ação destrutiva.
- Não saber como usar expressões regulares.
- Nunca ter ouvido sobre SQL injection ou cross-site scripting.
- Não permitir configuração simples, podendo ser parâmetros passados a um construtor de classe, métodos set/get chamados depois, ou constantes definidas em runtime.
- Não entender os benefícios e limitações da programação orientada a objeto.
- POO imprópria / tudo o que escrever, não importa o quão pequena é OO.
- Pensar que reuso de software é igual/requer que seu código seja OO.
- Não escolher padrões inteligentes.
- Não ter apenas um arquivo de configuração.
- Não querer que o conteúdo dos arquivos seja visto, mas para isso usar uma extenção .INC ao invés de .PHP.
- Não usar camada de abstração de banco de dados.
- Não manter o DRY, Don't repeat yourself(Não se repita). Se tem que copiar e colar ou duplicar algo no seu código seu design deve estar errado.
- Não fazer uma função/classe/método fazer somente uma coisar e não faze-las interagir.
- Não tentar usar as vantagens das características específicas da POO como classes abstratas, interface, herança, polimorfismo e modificadores de acesso.
- Não otimizar o design da sua aplicação com padrões de projeto estabelecidos.
- Não permitir seu usuário definir um diretório base se tiver múltiplos arquivos e/ou diretórios.
- Popular o namespace global, uma opção é prefixar as funções na sua biblioteca com uma string em comum.
- Não permitir um prefixo de tabela quando usar tabelas de banco de
dados. - Usar um template engine separado.
- Não dar uma olhada em frameworks estáveis para inspiração, muitos deles tem avançados conceitos de desenvolvimento web e boas práticas no código.