Vous êtes sur la page 1sur 51

O programador Pragmtico

De aprendiz a mestre

Edgard Davidson @edgarddavidson

Referncias

Andrew Hunt

David Thomas

!"#$%% &'(()(*+",%

!"#$#%&'#($)(*+*,-*./0$#1$21$ 3(04#)05$60.)(*)*(#7$0%$*2)0(#%$ /#%)#$,7'(08$"#$.90$60.%#:27(5$ 3(062(*(#7$6*./7/*)0%$;2#$,#(*1$ #%)*$0+(*8<$

Este livro contempla: combater a deteriorao de software no duplicar informaes escrever cdigo exvel, dinmico e adaptvel evitar a programao baseada no acaso blindar seu cdigo com contratos, asseres e excees capturar requisitos reais testar de modo incansvel e ecaz agradar seus usurios montar equipes de programadores pragmticos aumentar a preciso de seus desenvolvimentos com automao.

Preocupe-se com seu trabalho


Por que passar sua vida desenvolvendo software se no estiver interessado em faz-lo bem?

Reflita sobre seu trabalho Desligue o piloto automtico e assuma o controle. Critique e avalie constantemente seu trabalho.

Fornea opes, no d

desculpas esfarrapadas
Em vez de desculpas,

fornea

opes. No diga que no


pode ser feito; explique o que pode ser feito.

No tolere janelas quebradas Corrija projetos incorretos, decises erradas e cdigos frgeis quando os encontrar

Seja um catalisador de mudanas


Voc no pode impor mudanas s pessoas. Em vez disso, mostre a elas como o futuro pode ser e ajude-as a participar de sua criao

Lembre-se do cenrio em larga escala


No fique to absorvido pelos detalhes a ponto de no ver o que est acontecendo ao seu redor

Tome a qualidade parte dos requisitos


Envolva seus usurios na determinao dos requisitos de qualidade do projeto.

2)3+41&!5%6-7&($%)1%!%$!4-&!8&(1%+(&!*%! 8#).%8+$%)1#!

! "#$%!#!&'(%)*+,&*#!!-$!./0+1#! !

Analise criticamente o que voc l e ouve


No se deixe levar por fornecedores, pela mdia ou por dogmas. Analise as informaes em relao a si mesmo e ao seu projeto

o que voc diz e a maneira como diz

No adianta ter grandes idias se elas no forem divulgadas de modo eficaz.

NSR No Se Repita

Cada bloco de informaes deve ter uma representao ocial, exclusiva e sem ambiguidade dentro de um sistema.

Facilite a reutilizao
Se for fcil reu,lizar, ser reu,lizado. Crie um ambiente que apie a reu,lizao

Elimine efeitos entre elementos no relacionados


Projete componentes que sejam autosucientes, independentes e com uma nalidade exclusiva bem denida.

No h decises denitivas
Nenhuma deciso irrevogvel: planeje-se para a mudana.

Crie prottipos para aprender


A criao de prottipos uma experincia de aprendizado. Seu valor no est no cdigo produzido, mas nas lies aprendidas.

Programe em um nvel prximo ao domnio do problema


Projete e codique na linguagem do seu usurio.

Estime para evitar surpresas


Estime antes de comear. Voc identificar possveis problemas logo de incio.

O versionamento a mquina de tempo de seu trabalho ele o permite voltar.

Use controle de verso

Corrija o problema, esquea o culpado


No importa se voc ou outra pessoa foi o culpado pelo bug ele precisar de correo de qualquer forma.

No suponha teste
Comprove suas suposies no ambiente real com dados e condies reais.

Escreva um cdigo que escreva cdigos


Os geradores de cdigos aumentam a produtividade e ajudam a evitar a duplicao

Programe por contratos

Use contratos para documentar e provar que o cdigo no faz mais nem menos do que ele prope fazer.

Use excees para problemas excepcionais

try{ }catch(){ }catch(){ }finally{ }

As excees podem sofrer de todos os problemas de legibilidade e manuteno dos emaranhados de cdigos clssicos. Guarde-as para acontecimentos excepcionais.

Reduza a vinculao entre mdulos


Evite a vinculao escrevendo cdigos cautelosos e aplicando a lei de Demter

Es,me a ordem de complexidade

O(n) de seus algoritmos

Tenha uma idia de quanto o processo deve demorar antes de escrever o cdigo

Fonte: Nvio Ziviani

Tenha suas estimativas


A anlise matemtica de algoritmos no diz tudo. Tente cronometrar seu cdigo em seu ambiente de destino.

Refatore cedo, refatore sempre


Da mesma forma que voc pode capinar e reorganizar um jardim, reescreva, reorganize e reconstrua o cdigo quanto necessrio. Ataque a raiz do problema.

Projete para testar

Comece a pensar no teste antes de escrever uma linha de cdigo

Teste seu cdigo ou seus usurios testaro


Teste incansavelmente. No deixe que seus usurios encontre erros para voc

No use cdigo de wizard que voc no entende


Wizards podem gerar muitas linhas de cdigo. Verifique se voc o entendeu por completo antes de introduzi-lo no seu projeto.

Trabalhe com usurios para pensar como um usurio


a melhor maneira de entender como o sistema ser usado de verdade

Abstraes tem vida mais longa do que detalhes

Invista na abstrao e no na implementao. As abstraes podem sobreviver s diversas mudanas provenientes de diferentes implementaes e novas tecnologias.

Use um glossrio do projeto

Crie e mantenha uma fonte exclusiva com todos os termos e vocabulrio especficos de um projeto

No pense fora da caixa encontre a caixa


Quando diante de um problema difcil, identifique todas as restries reais. Faa a si prprio a pergunta: Isso precisa ser feito? De fato, precisa ser feito?

No seja escravo de mtodos formais


No adote cegamente qualquer tcnica sem traz-la para o contexto de suas prticas e capacidades de desenvolvimento

Ferramentas caras no produzem projetos melhores


Cuidado com a propaganda dos fornecedores, com dogmas da indstria e com o apelo da etiqueta de preo. Julgue as ferramentas por seu mrito

Organize as equipes com base na funcionalidade

No separa projetista de codicadores, testadores de modeladores de dados. Construa equipes como constri o cdigo.

Teste cedo. Teste Sempre. Teste automaticamente


Testes executados a cada construo so muito mais eficazes do que planos de teste que ficam aguardando para ser executados.

A codicao s estar concluda aps todos os testes serem executados


Nada mais a declamar.

Use o seu conhecimento para testar seus testes


Introduza erros de propsito em uma cpia separada da fonte para vericar se os testes iro captur-los.

Teste a cobertura de estados e no a cobertura do cdigo


Iden,que e

teste estados signica:vos do programa. Testar apenas linhas de cdigo no suciente.

Encontre os erros apenas uma vez


Quanto um testador humano encontrar um erro, essa deve ser a ltima vez que um testador humano o encontrar. Testes automatizados devem procur-lo desse momento em diante.

Construa a documentao no cdigo, no a acrescente como complemento


Documentao criada separadamente do cdigo tem menos probabilidade de estar correta e atualizada

Narrative: In order to calculate BMI with ease As a doctor I want to have BMI Calculator application Scenario: Simple BMI calculator validation Given a body mass index calculator When a patient's is with mass 77 kg and height 1.75 m Then patient's body mass index is 25.14285659790039

Exceda gentilmente as expectativas de seus usurios


Tente estender as expectativas de seus usurios e ento entregue apenas um pouco mais

Os arteses da an,guidade cavam orgulhosos em assinar seu

Assine seu trabalho

trabalho. Voc tambm deve car

Obrigado!

Vous aimerez peut-être aussi