Você está na página 1de 51

O programador Pragmático

De aprendiz
a mestre

Edgard Davidson
@edgarddavidson
Referências

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 deterioração de software
não duplicar informações
escrever código flexível, dinâmico e adaptável
evitar a programação baseada no acaso
blindar seu código com contratos, asserções e exceções
capturar requisitos reais
testar de modo incansável e eficaz
agradar seus usuários
montar equipes de programadores pragmáticos
aumentar a precisão de seus desenvolvimentos com automação.
Preocupe-se com seu trabalho
Por que passar sua vida desenvolvendo software
se não estiver interessado em fazê-lo bem?
Forneça opções, não dê
desculpas
esfarrapadas
Em vez de desculpas, forneça

opções. Não diga que não


pode ser feito; explique o que
pode ser feito.
Sejaumcatalisadordemudanças
Você não pode impor mudanças às pessoas.
Em vez disso, mostre a elas como o futuro pode ser e
ajude-as a participar de sua criação
Lembre-se do cenário em larga escala
Não fique tão absorvido pelos detalhes a ponto de não ver o que
está acontecendo ao seu redor
Tome a qualidade parte dos requisitos
Envolva seus usuários na determinação dos requisitos de qualidade
do projeto.
2)3+41&!5%6-7&($%)1%!%$!4-&!8&(1%+(&!*%!
8#).%8+$%)1#!

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

!
Não se Analise
deixe levarcriticamente
por fornecedores,o pela
quemídia
vocêou lê
por e ouveAnalise as
dogmas.
informações em relação a si mesmo e ao seu projeto
É o que você diz e a maneira como diz

Nãoadiantatergrandesidéiasseelasnãoforemdivulgadasdemodoeficaz.
NSR–NãoSeRepita
Cadablocodeinformaçõesdeveterumarepresentaçãooficial,
exclusivaesemambiguidadedentrodeumsistema.
Facil i te a re u t ili zaç ão
Seforfácilreu,lizarseráreu,lizado.Crieumambienteque
apóieareu,lização
Elimine efeitos entre
elementos não
relacionados

Projete componentes que sejam auto -

suficientes, independentes e com uma


finalidade exclusiva bem definida
.
Não há decisões definitivas
Nenhuma decisão é irrevogável: planeje-se para a mudança.
Crie protótipos para aprender
A criação de protótipos é uma experiência de aprendizado. Seu valor não
está no código produzido, mas nas lições aprendidas.
Programe em um nível próximo ao
domínio do problema
Projete e codifique na linguagem do seu usuário.
Estimeparaevitarsurpresas
Estimeantesdecomeçar.Vocêidentificarápossíveisproblemas
logodeinício.
Use contole de versão
O versionamen é a máquina de mpo de seu tabalho – ele o
permi voltar.
Corrija o problema,
esqueça o culpado
Não importa se você ou outra
pessoa foi o culpado pelo bug –
ele precisará de correção de
qualquer forma.
Não suponha – teste

Comprove suas suposições no


ambiente real – com dados e
condições reais.
Escreva um código que escreva códigos

Os geradores de códigos aumentam a


produtividade e ajudam a evitar a
duplicação
Programe por contratos

Use contratos para


documentar e provar que
o código não faz mais nem
menos do que ele propõe
fazer.
Use exceções para problemas excepcionais

Asexceçõespodemsofrerdetodososproblemasde
legibilidadeemanutençãodosemaranhadosdecódigos
clássicos.Guarde-asparaacontecimentosexcepcionais.
Reduza a vinculação entre módulos

Evite a vinculação escrevendo códigos


“cautelosos” e aplicando a lei de Deméter
Es,meaordemdecomplexidade O(n)deseusalgoritmos
Tenhaumaidéiadequantooprocessodevedemorarantesdeescreverocódigo

Fonte: Nívio Ziviani


Tenha suas estimativas
A análise matemática de algoritmos não diz tudo. Tente
cronometrar seu código 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 código quanto necessário.
Ataque a raiz do problema.
Projete para testar

Comece a pensar no teste antes de


escrever uma linha de código
Teste seu código ou seus usuários
testarão
Teste incansavelmente. Não deixe que seus
usuários encontre erros para você
Não use código de wizard que você não entende

Wizardspodemgerarmuitaslinhasdecódigo.Verifiquesevocêoentendeupor
completoantesdeintroduzi-lonoseuprojeto.
Trabalhe com usuários para
pensar como um usuário
É a melhor maneira de entender como o
sistema será usado de verdade
Não seja escravo de métodos
formais

Não adot cegament qualquer técnica sem


azê-la para o contx de suas prácas e

capacidades de desenvolvimen
Ferramentas caras não produzem projes melhores

Cuidadocomapropagandadosfornecedores,comdogmasda
indústriaecomoapelodaetiquetadepreço.Julgueas
ferramentasporseumérito
Teste cedo. Teste Sempre. Teste automaticamente
Testes executados a cada construção são muito mais eficazes do
que planos de teste que ficam aguardando para ser executados.
A codificação só estará concluída
após todos os testes serem
executados
Nada mais a declamar.
Testeacoberturadeestadosenãoacoberturadocódigo

Iden,fiquee
testeestadossignifica:vosdoprograma.
Testarapenaslinhasdecódigonãoésuficiente.
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 documentação no código, não a acrescente como
complemento

Documentaçãocriadaseparadamentedocódigo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 usuários

Tente estender as expectativas de seus usuários e então


entregue apenas um pouco mais
Obrigado!

Você também pode gostar