Boas práticas em desenvolvimento de software
Escrevendo um Código Limpo
por Ivan de Assis Leal
Palestra
• 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?
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?
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...
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?
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....
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."
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..."
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"
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.
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..
Você se preocupa com o seu código?
Como escrever um bom código (Código Limpo) ?
Veja apenas 3 técnicas a seguir..
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:
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....
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.
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;
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?
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?
“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?
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?
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.
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?
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?
Você se preocupa com o seu código?
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/ :)
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.