POG nunca mais - SOLISC

3.289 visualizações

Publicada em

Apresentação da palestra "POG nunca mais - técnicas e macetes no desenvolvimento de PHP (e MySQL) proferida no 4º SOLISC em Florianóplis/SC

Publicada em: Tecnologia

POG nunca mais - SOLISC

  1. 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. 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. 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
  4. 4. O que é POG?
  5. 5. Programação Orientada a Gambiarras
  6. 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. 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
  8. 8. ATP Adaptação Técnica Profissional
  9. 9. Exemplos de POG’s
  10. 10. disco -99???
  11. 11. F1 sem teclado?
  12. 12. ????
  13. 13. erro com sucesso!
  14. 14. equipe eu, mim e nós dois!
  15. 15. Causas e Causadores da POG
  16. 16. 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....
  17. 17. 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...
  18. 18. Mantendo a POG longe de seu sistema
  19. 19. 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){ .... }?>
  20. 20. Programando em PHP sem POG use variáveis “humanas” $xyz = 1; $fdp = 2; $pqp = 3; $ValorEntrada = 1; $ValorRetorno = 2; $ValorSaida = 3;
  21. 21. 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; } } ?>
  22. 22. 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); ????
  23. 23. Programando em PHP sem POG Comente seu código // RSS 0.92 define('SIMPLEPIE_TYPE_RSS_092', 8); // RSS 0.93 define('SIMPLEPIE_TYPE_RSS_093', 16); // RSS 0.94 define('SIMPLEPIE_TYPE_RSS_094', 32); // RSS 1.0 define('SIMPLEPIE_TYPE_RSS_10', 64); // RSS 2.0 define('SIMPLEPIE_TYPE_RSS_20', 128);
  24. 24. 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 ?>
  25. 25. 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: }
  26. 26. 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)
  27. 27. 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...
  28. 28. Ferramentas contra POG
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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?
  33. 33. Dicas contra POG
  34. 34. 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
  35. 35. Projetos Utilize uma metodologia (qualquer uma!) SCRUM Waterfall eXtreme Programming whateaver
  36. 36. 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
  37. 37. 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!)
  38. 38. 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
  39. 39. Técnicas de programação Chuck Norris (just for fun)
  40. 40. 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'; }
  41. 41. 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;
  42. 42. Obrigado Paulino Michelazzo Fábrica Livre Soluções para Internet www.fabricalivre.com.br Twitter’s: @pmichelazzo - @fabricalivre

×