Download - Boas praticas em_desenvolvimento_de_software

Transcript
Page 1: Boas praticas em_desenvolvimento_de_software

Boas práticas em desenvolvimento de software

Escrevendo um Código Limpo

por Ivan de Assis Leal

Palestra

Page 2: Boas praticas em_desenvolvimento_de_software

• Você já perdeu horas tentando entender um código escrito por outra pessoa?

• Você já presenciou o que deveria ser uma alteração unica e direta, mas que em vez disso teve de ser feita em vários módulos?

Você se preocupa com seu o código?

Page 3: Boas praticas em_desenvolvimento_de_software

Se você respondeu "Sim" as estas perguntas então....... você já teve a má experiência de

trabalhar em um código ruim

Você se preocupa com o seu código?

Page 4: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

Porque se preocupar em como escrever um código?

Basicamente porque.....

Mas hoje temos tantas ferramentas como IDE sofisticadas, Framework fantásticos e

tanta tecnologia nova...

Page 5: Boas praticas em_desenvolvimento_de_software

Um código mal escrito faz com que...• Cada alteração em uma parte gera uma

cascata de erros.• Cada nova alteração exige que o código

seja entendido.• O tempo de produtividade de uma equipe

seja reduzido ao máximo.

Você se preocupa com o seu código?

Page 6: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

Se você quer ser um programador, entenda a importância de escrever

um bom código.

Mas para você ver realmente a importância disto. Veja o que alguns "profissionais" da

sua área dizem sobre esta assunto....

Page 7: Boas praticas em_desenvolvimento_de_software

Robert C. Martin 

Eu sou um distinto professor e titular da Faculdade de Engenharia Presidente em Ciência da Computação na Universidade Texas A & M;Projetei e implementou a linguagem C + + de programação.

Você se preocupa com o seu código?

O que é um bom código para ele?"Deve ser elegante e eficiente....as dependências mínimas para facilitar a manutenção, o tratamento de erro deve ser completo.....O código limpo faz bem apenas uma coisa."

Page 8: Boas praticas em_desenvolvimento_de_software

Dave ThomasDave Thomas tem uma vasta experiência na indústria de software, como engenheiro,consultor, arquiteto executivos e investidores. Ele foi o principal arquiteto visionário e para a  IBM VisualAgeSmalltalk e Java e ferramentas de máquinas virtuais, incluindo o popular open-source, multi-linguagem IDE Eclipse.org. 

Você se preocupa com  o código?

O que ele diz sobre a importância um bom código?"Além de seu criador, um desenvolvedor pode ler e melhorar um código limpo...O código deve ser inteligível..."

Page 9: Boas praticas em_desenvolvimento_de_software

Ward Cunningham Criador do conceito "WikiWiki", criado do Fit, co-criador da Programação Extrema (eXtreme Programming) . Líder da Smalltalk e da OO. Pai de todos aqueles que se importam com código.

Você se preocupa com o seu código?

O que ele diz sobre a importância um bom código?"Você sabe que esta criando um código limpo quando cada rotina que você leia se mostra como o que você esperava"

Page 10: Boas praticas em_desenvolvimento_de_software

Robert C. Martin 

Robert C. Martin tem sido um software profissional desde 1970. Nos últimos 35 anos,trabalhou em várias capacidades em literalmente centenas de projetos de software.Ele é autor de "marco" livros sobre Agile Programming, Extreme Programming, UML,Programação Orientada a Objetos e Programação C + +.  Publicou dezenas deartigos em revistas comerciais diversos. Hoje, ele é uma das maiores autoridades da indústria de software no desenvolvimento ágil de software .

Você se preocupa com o seu código?

O que ele diz sobre a importância um bom código?Bem, para Robert apenas cito que ele é autor de um dos livros mais conhecidos sobre o assunto : Código Limpo - Habilidades práticas do Agile Software.

Page 11: Boas praticas em_desenvolvimento_de_software

Bom, acredito que depois desses depoimentos sobre profissionais com grande

experiência sobre o assunto...

Você se preocupa com o seu código?

Você deve estar mais interessado sobre a importância de se preocupar com a escrita

de seu código..

Page 12: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

Como escrever um bom código (Código Limpo) ?

Veja apenas 3 técnicas a seguir..

Page 13: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

1. Nomes Significativos – Utilizando nomes que tenham um significado.

Muitos desenvolvedores acham desnecessário pensar em nomes, adequados e significativos sejam para suas variáveis , métodos, classes, tabelas etc..Porem a utilização de nomes significativos para os membros de nosso sistema são de grande importância para o entendimento do código, principalmente em casos de manutenção.

Veja um exemplo:

Page 14: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

double Mov = 70.00;double Desc = 8.00; double J = 5.00; double Tot = 0.0; DateTime DTPag = Convert.ToDateTime("15/12/2009");            

Responda rápido, o que será que armazenam as variáveis abaixo:

Ah! Com alguns minutos de seu tempo é um pouco de esforço pelo menos algumas delas ficam fáceis de ser entendidas. 

Mas esse esforço não precisaria existir se elas tivessem esses nomes....

Page 15: Boas praticas em_desenvolvimento_de_software

double valorMovimento =  70.00;double valorDesconto = 8.00;double porcentagemJuro = 5.00;double valorTotalMovimento = 0.0;                            DateTime dataPagamentoMovimento = Convert.ToDateTime("15/12/2009");bool isPagementoAtrasado = false;string mensagem = "";

Você se preocupa com o seu código?

Acredito que agora ficou mais fácil saber o que cada variável trata, por apenas utilizar Nomes Significativos – Utilizando nomes que tenham um significado.

Page 16: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

2. Nomes significativos – Nomes PronunciáveisA utilização de nomes que podem ser facilmente pronunciáveis é um regra bastante útil principalmente ao trabalhar em equipe. Certamente precisamos em determinado ponto da codificação trocar idéias com outros desenvolvedores. Imagine a conversa entre 2 desenvolvedores sobre um algoritmo que possua as 3 variáveis abaixo.

DateTime dtUltCompProd;DateTime dtLimPagImpSJr;decimal valMedCompUltSeisMs; 

Page 17: Boas praticas em_desenvolvimento_de_software

Seria algo como:

“Fulano como você faz para pegar o valor de dêtê-Ultê-Compê-Próde, você por acaso usa a dêtê-Lim-Pague-Impe-S-JotaR para chegar nesse valor ?. 

Outra coisa percebi tambem a variável val-Médi-Compê-Ultê-Seis-Ms o para que serve ela?”

Você se preocupa com o seu código?

Page 18: Boas praticas em_desenvolvimento_de_software

Complicado não, poderíamos tornar a conversa um pouco mais inteligente alterando os nomes das variáveis.

DateTime dataDaUltimaCompraDoProduto;DateTime dataLimiteDoPagamentoSemJuros;decimal valorMedioDaCompraDosUltimoSeisMeses;

Agora essa conversa ficaria bem melhor, algo como....

Você se preocupa com o seu código?

Page 19: Boas praticas em_desenvolvimento_de_software

“Fulano como você faz para pegar o valor da dataDaUltimaCompraDoProduto, você por acaso usa a dataLimiteDePagamentoSemJuros para chegar nesse valor ?

Outra coisa percebi tambem a variável valorMedioDaCompraNosUltimoSeisMeses para que serve ela?”

Bem mais fácil de entender. Por isso use Nomes significativos – Nomes Pronunciáveis

Você se preocupa com o seu código?

Page 20: Boas praticas em_desenvolvimento_de_software

Vamos a terceira técnica.

3. Nomes Significativos – Uma palavra por conceitoProcure utilizar a regra de uma “palavra por conceito” e se apegue a essa palavra, evite usar palavras diferentes para o mesmo conceito como pegar,recuperar e obter. Por exemplo veja o código das classes a seguir.....

Você se preocupa com o seu código?

Page 21: Boas praticas em_desenvolvimento_de_software

public class Banco{ public bool Salvar() { // Código para Persistir um Banco return false; } }

Você se preocupa com o seu código?

public class Endereco { public bool Gravar() { // Código para Persistir um Endereco return false; } }

No exemplo acima possuímos 2 classes com métodos em comum – persistir um objeto no banco de dados – mas observe que para cada classes foi utilizado um nome diferente para o método equivalente.Assim ao definir uma palavra para um conceito abstrato, se apegue a esta palavra e utilize em todo o código.

Page 22: Boas praticas em_desenvolvimento_de_software

Bem considerei apenas 3 técnicas para tornar seus código limpo e conseqüentemente um

melhor programador.....

Mas existem muitas outras técnicas que você pode aprender e colocar em prática.. 

Sugiro que você pesquisa mais sobre os assuntos a seguir....

Você se preocupa com o seu código?

Page 23: Boas praticas em_desenvolvimento_de_software

Pesquise sobre....

• Como escreve comentários significativos.• Formatação de Código.• Não uso de notações Húngara.• Refactoring 

Para seu estudo como excelente programador sugiro os livros a seguir....

Você se preocupa com o seu código?

Page 24: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

Page 25: Boas praticas em_desenvolvimento_de_software

Você se preocupa com o seu código?

Se a grana está curta, você estudar com o conteúdo dos sites abaixo:

• http://www.refactoring.com/catalog/index.html• http://sourcemaking.com/• http://blog.setforcode.com/ :)

Page 26: Boas praticas em_desenvolvimento_de_software

Obrigado!

Ivan de Assis LealDúvidas ou críticas : [email protected]

http://twitter.com/lealivan

http://www.linkedin.com/pub/ivan-assis-leal/20/716/17

http://blog.setforcode.com/

Esta apresentação teve como base o livro já cidtado, Código Limpo - Habilidades práticas do Agile Software.