POG nunca mais - SOLISC

Post on 17-Dec-2014

2.263 views 3 download

description

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

Transcript of POG nunca mais - SOLISC

POG Nunca Mais!Técnicas e macetes para o desenvolvimento em PHP

também para MySQL

4º SOLISC - Florianópolis/SCNovembro - 2009

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)

PalestrantePaulino 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

O que é POG?

Programação Orientada a Gambiarras

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

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

ATP

Adaptação Técnica Profissional

Exemplos de POG’s

disco -99???

F1 sem teclado?

????

erro com sucesso!

equipe eu, mim e nós dois!

Causas e Causadores da POG

Algumas causasTempos 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....

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...

Mantendo a POG longe de seu sistema

Programando em PHP sem POG

Não use “short tag's”<?=$var?><?php echo $var?>

Facilite a leitura de código<?if($var==1): ... endif?><?phpif($var == 1){

....}?>

Programando em PHP sem POG

use variáveis “humanas”

$ValorEntrada = 1;$ValorRetorno = 2;$ValorSaida = 3;

$xyz = 1;$fdp = 2;$pqp = 3;

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;}}?>

Programando em PHP sem POG

Comente seu códigodefine('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);

????

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);

Programando em PHP sem POG

Veja todos os errosE_ALL & ~E_NOTICE@mysql_conn($conn);E_ALL

Não acredite em usuários<?php

system("ls $dir");?>

Programando em PHP sem POG

Loopingsloopingsloopingsloopingsloopingsif($x==1){...}if($x==2){...}if($x==3){...}if($x==4){...}switch($x){

case 1:case 2:case 3:case 4:

}

Programando em PHP sem POG

Tipos de dados e colunasnome = varchar(255)data-nascimento = varchar(255)sexo = varchar(255)valor-trabalho = varchar(255)

nome = varchar(150)data-nascimento = datesexo = enum('m','f')valor-trabalho = decimal(5,2)

Programando em PHP sem POG

Limpe a memóriada máquina

unset($var1, $var2...);mysql_close($conn);

Limpe a SUA memóriaCascão, Cebolinha,

Doritos, Heroes, JotaQuest, Playboy, Rio Branco, Santa Helena, Tacacá, Wii...

Ferramentas contra POG

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

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

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

Sem POG no MySQLMySQL Workbench

modelagem de DB correta

innotop

quem é a fominha do sistema?

MySQL Report

status do banco em diversos formatos

phpMyAdmin

precisa dizer algo?

Dicas contra POG

ProjetosSeja 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

Projetos

Utilize uma metodologia (qualquer uma!)

SCRUM

Waterfall

eXtreme Programming

whateaver

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...”

“preciso para ontem”Sempre existem bons clientes para bons

desenvolvedores

CodificaçãoPare 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!)

DocumentaçãoDocumente tudo!

Processos, códigos, database, etc

Manuais, um mal necessário

manual para usuário e administração

manual de disaster recovery

Técnicas de programação Chuck Norris(just for fun)

O backup mais rápido do mundo,

powered by Chuck Norriscp -R > /dev/null

Debugger Chuck Norrisif($x==1){

echo 'passou aqui, é 1';}else{

echo 'passou aqui, não é 1';}

Chuck nunca erra...E_ALLdisplay_errors = offdisplay_startup_errors = offlog_errors = off

E sempre conecta...GRANT ALL PRIVILEGES ON *.* TO '%'@'%'

WITH GRANT OPTION;FLUSH PRIVILEGES;

Obrigado

Paulino MichelazzoFábrica Livre Soluções para Internet

www.fabricalivre.com.brTwitter’s: @pmichelazzo - @fabricalivre