Este documento fornece técnicas e dicas para desenvolvimento em PHP sem o uso de "Programação Orientada a Gambiarras" (POG). Ele discute o que é POG, exemplos comuns, causas e ferramentas para evitá-la, incluindo técnicas de programação inspiradas por Chuck Norris.
1. POG Nunca Mais!
Técnicas e macetes para o tam
b
ém
desenvolvimento em PHP MyS para
QL
4º SOLISC - Florianópolis/SC
Novembro - 2009
2. veremos...
O que é POG
Exemplos de POG
Causas e causadores de POG’s
Mantendo a POG longe de seus sistemas
Programando em PHP sem POG
Ferramentas contra POG
Dicas contra POG (inclui técnicas Chuck Norris)
3. Palestrante
Paulino Michelazzo
Diretor da Fábrica Livre, empresa especializada no
desenvolvimento não-POG com ferramentas de
gestão livres (Drupal, Joomla e Magento) e PHP
paulino@fabricalivre.com.br
6. Definição de Gambiarra
lâmpada instalada na extremidade
dum comprido cabo elétrico para
poder ser utilizada numa área
relativamente grande*
*Novo Dicionário Aurélio da Língua Portuguesa, p. 961
7. Definição de gambiarra
(coloquial)
aquilo que é de difícil concepção, de inesperada
execução para tornar fácil o uso de algo que sequer
deveria existir*
* http://desciclopedia.org/wiki/Pog
17. Algumas causas
Tempos escassos
do jeito que está, vai...
Falta de documentação
levantamentos, processos
Erros de projetos
Prazos, mão de obra, ferramentas
Mudanças de última hora
esquecemos uma feature....
18. Alguns causadores
Clientes
não sabem o que querem e como querem
Gerentes de Projetos
pouca sinergia com o cliente (retorne ao 1)
“Sofinhos”
acham que sabem, dizem que sabem mas...
20. Programando em PHP
sem POG
Não use “short tag's” Facilite a leitura de código
<?=$var?> <?if($var==1): ... endif?>
<?php echo $var?> <?php
if($var == 1){
....
}?>
21. Programando em PHP
sem POG
use variáveis “humanas”
$xyz = 1;
$fdp = 2;
$pqp = 3;
$ValorEntrada = 1;
$ValorRetorno = 2;
$ValorSaida = 3;
22. Programando em PHP
sem POG
Indente seu código e salve vidas
?php $var = 1;if($var==1){for($x=0;$x<100;$x++){echo $x;}}?
<?php
$var = 1;
if($var==1){
for($x=0;$x<100;$x++){
echo $x;
}
}
?>
23. Programando em PHP
sem POG
Comente seu código
define('SIMPLEPIE_TYPE_RSS_092', 8);
define('SIMPLEPIE_TYPE_RSS_093', 16);
define('SIMPLEPIE_TYPE_RSS_094', 32);
define('SIMPLEPIE_TYPE_RSS_10', 64);
define('SIMPLEPIE_TYPE_RSS_20', 128);
????
25. Programando em PHP
sem POG
Veja todos os erros Não acredite em usuários
E_ALL & ~E_NOTICE <?php
@mysql_conn($conn); system("ls $dir");
E_ALL ?>
26. Programando em PHP
sem POG
Loopingsloopingsloopingsloopingsloopings
if($x==1){...}
if($x==2){...}
if($x==3){...}
if($x==4){...}
switch($x){
case 1:
case 2:
case 3:
case 4:
}
27. Programando em PHP
sem POG
Tipos de dados e colunas
nome = varchar(255)
data-nascimento = varchar(255)
sexo = varchar(255)
valor-trabalho = varchar(255)
nome = varchar(150)
data-nascimento = date
sexo = enum('m','f')
valor-trabalho = decimal(5,2)
28. Programando em PHP
sem POG
Limpe a memória Limpe a SUA memória
da máquina Cascão, Cebolinha,
unset($var1, $var2...); Doritos, Heroes,
JotaQuest, Playboy,
mysql_close($conn);
Rio Branco, Santa
Helena, Tacacá, Wii...
30. xDebug
Extensão para “debugging” de scripts PHP
Análise de código
Trace de funções e pilhas em mensagens
de erro
Indicadores de nomes de funções e
arquivos
http://xdebug.org
31. Firebug & FirePHP
Extensões para Firefox
Depuração de código HTML, CSS, DOM, JS
Depuração de código PHP
On-the-fly
www.firephp.org
32. PHP Debug
Debug de código com geração de trace
Tempo de processamento (inclusive queries)
Verificação de performance
http://sourceforge.net/projects/phpdebug
33. Sem POG no MySQL
MySQL Workbench
modelagem de DB correta
innotop
quem é a fominha do sistema?
MySQL Report
status do banco em diversos formatos
phpMyAdmin
precisa dizer algo?
35. Projetos
Seja realista com os prazos propostos
pode-se ficar doente
pode-se ter diarréia
pode-se perder o backup e o backup do backup
pode-se ficar sem conexão Internet
pode-se queimar a fonte
37. Clientes, clientes...
Não se sente bem com o cliente, pule fora
chato é diferente de ser correto
pede desconto em tudo
“é só uma funçãozinha...”
Sempre existem
“preciso para ontem” bons clientes
para bons
desenvolvedores
38. Codificação
Pare e pense no que vai fazer
existem 1001 maneiras de fazer código ruim
código bom = funcional, rápido, legível,
documentado e com o mínimo de bug’s
O usuário é seu inimigo!
feche as portas
acredite na estupidez humana (ela existe!)
39. Documentação
Documente tudo!
Processos, códigos, database, etc
Manuais, um mal necessário
manual para usuário e administração
manual de disaster recovery
41. O backup mais rápido do mundo,
powered by Chuck Norris
cp -R > /dev/null
Debugger Chuck Norris
if($x==1){
echo 'passou aqui, é 1';
}else{
echo 'passou aqui, não é 1';
}
42. Chuck nunca erra...
E_ALL
display_errors = off
display_startup_errors = off
log_errors = off
E sempre conecta...
GRANT ALL PRIVILEGES ON *.* TO '%'@'%'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
43. Obrigado
Paulino Michelazzo
Fábrica Livre Soluções para Internet
www.fabricalivre.com.br
Twitter’s: @pmichelazzo - @fabricalivre