SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Qualidade no
Desenvolvimento de
Sistemas
Melhores Práticas de
Programação
Anderson Augustinho
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 1
Agenda
1 Boas Práticas Gerais de Programação
2 Boas Práticas de Programação - Código
3 Conclusões
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 2
1 Boas Práticas Gerais de
Programação
1.1 Comentários
- No início de cada arquivo deve ter seu nome, uma
descrição do que o arquivo contém, quem o criou e em
qual data.
- Antes de cada função, deve ser explicado o que ela faz,
o que ela retorna e qual o comportamento das variáveis.
Use como premissa que alguém consegue definir se irá ou
não usar a rotina e poderá usá-la apenas lendo o
comentário, sem precisar conhecer o código.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 3
1 Boas Práticas Gerais de
Programação
1.1 Comentários
- Se a função ficar grande, é importante explicar na
criação das variáveis o que elas fazem. Comente cada
grande parte do código. Por exemplo: quando o programa
entra em um if e quando entra em um else.
- Não precisa comentar coisas óbvias como explicar que
contador++ está incrementando o contador.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 4
1 Boas Práticas Gerais de
Programação
1.2 Nomes Claros às Variáveis
- Uma variável não precisa ter nome e sobrenome, mas
não deve ser chamada apenas por uma letra.
- Seu nome deve ter um significado lógico, de forma que
alguém apenas lendo o nome consiga imaginar o que deve
ser armazenado na variável.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 5
1 Boas Práticas Gerais de
Programação
1.3 Evite mapeamento mental
- Às vezes vemos variáveis nomeadas com uma letra só.
Sem dúvida são perfeitamente aceitáveis em um loop (i é
a mais comum), mas desde que o loop seja pequeno e não
haja conflitos. Em outros contextos, as variáveis de uma
só letra certamente serão problemáticas, pois o leitor terá
que fazer mapeamento mental daquela letra para o seu
real significado. Com o passar do tempo, nem o próprio
autor do código lembrará qual o verdadeiro conceito
daquela variável de uma letra só.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 6
1 Boas Práticas Gerais de
Programação
1.4 Use Tipagem Forte Logicamente
- Algumas linguagens são fracamente tipada. Ou seja, ele
não checa se você está usando corretamente os tipos da
linguagem. Você pode inserir um texto em uma variável
numérica, por exemplo. Pode, mas não deveria.
- Tome o cuidado de usar variáveis do tipo correspondente
ao seu uso.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 7
1 Boas Práticas Gerais de
Programação
1.5 Use Comandos Claros e Usualmente Conhecidos
- A maioria das linguagens possuem mais de uma forma
para resolver uma situação. Tente sempre usar a mais
comum. Pode ser que a manutenção do programa seja
feita por uma pessoa que não tenha muito conhecimento
da linguagem e não conheça o comando utilizado.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 8
1 Boas Práticas Gerais de
Programação
1.6 Identação
- É algo simples e que facilita incrivelmente tanto a
construção de um programa como sua manutenção.
- Usar, se possível, o próprio tab ao invés de espaços, para
que seja fácil manter todas as linhas iniciando-se na
mesma coluna.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 9
1 Boas Práticas Gerais de
Programação
1.7 Funções
- A primeira e mais importe regra é que funções devem ser
pequenas. A segunda regra é que devem ser menores
ainda.
- Funções pequenas são fáceis de entender e facilitam o
cumprimento do princípio: "faça apenas uma coisa".
- A regra de ouro é: "Funções devem fazer uma coisa.
Devem fazê-la bem. Devem fazer somente essa coisa."
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 10
1 Boas Práticas Gerais de
Programação
1.7 Funções
- O melhor jeito de saber se a função está fazendo "mais
do que uma coisa" é verificar se é possível extrair outra
função de dentro dela.
- Funções devem fazer algo ou responder algo, nunca os
dois. Ou a função deve alterar o estado de um objeto ou
deve retornar alguma informação sobre o objeto. Fazer as
duas coisas em geral leva a confusões.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 11
1 Boas Práticas Gerais de
Programação
1.8 Testes
- Construir um software não é somente escrever código e
vê-lo funcionar, é saber que aquele código será
manutenível e que outras pessoas vão alterá-lo. Por isto
teste é fundamental.
- Quem desenvolve tem que ser responsável por aquilo
que escreve e saber que seu sistema tem que continuar
funcionando, por isto toda linha escrita deve estar
testada.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 12
1 Boas Práticas Gerais de
Programação
1.8 Testes
- Muitas empresas veem testes como gastos maiores no
projeto, o que de fato acontece, porém a qualidade do
software produzido é algo significante. Quando não se
produz teste automatizado, a quantidade de testes
manuais são maiores e muitas vezes o custo desses testes
também é maior.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 13
2 Boas Práticas de Programação -
Código
- Para se ter um código bem enxuto e com boa qualidade
não basta apenas termos convenção de nomes, classes,
variáveis, entre outros. Precisamos ter um padrão para
algumas situações para melhorarmos não somente a
performance do código que está sendo escrito, mas
também a qualidade de ordenação para que, futuros
desenvolvedores, ao olharem o nosso código em uma
manutenção, consigam facilmente identificar e assim
trabalhar em cima do problema e não reaprender tudo o
que foi feito, assim desperdiçando tempo e dinheiro.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 14
2 Boas Práticas de Programação -
Código
2.1 Operadores de Curto Circuito
- Operadores que operam em curto-circuito fazem parte
de algumas linguagens de programação. Esses operadores
ajudam a poupar verificações desnecessárias em nosso
código.
if(condicao1 && condicao2) { //… }
if(condicao1 || condicao2) { //… }
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 15
2 Boas Práticas de Programação -
Código
2.1 Operadores de Curto Circuito
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 16
2 Boas Práticas de Programação -
Código
2.2 Teste de Ordenação Lógica
- Um detalhe bastante importante que muitas vezes não
se presta atenção é quando utilizamos o bloco switch.
Neste caso, o ideal é sempre ordenar a lista de
possibilidades da mais frequente para a menos frequente.
Isso evitará que a avaliação seja feita em vários itens,
tendo assim uma perda de performance, pois se o item
frequente está na último posição a ser avaliada, ela
deverá passar por todas as outras antes.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 17
2 Boas Práticas de Programação -
Código
2.2 Teste de Ordenação Lógica
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 18
2 Boas Práticas de Programação -
Código
2.3 Fusão de Loops
- A fusão de loops é quando usam-se dois loops distintos
para operar o mesmo conjunto de elementos e, em cada
um deles, efetuar uma ação diferente. Na maioria das
vezes utilizamos isso em coleções para alterar algum
valor, ou algo do tipo.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 19
2 Boas Práticas de Programação -
Código
2.3 Fusão de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 20
2 Boas Práticas de Programação -
Código
2.3 Fusão de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 21
2 Boas Práticas de Programação -
Código
2.4 Minimizar Trabalho dentro de Loops
- Este é um dos pontos essenciais para ganharmos em
performance na aplicação. Muitas vezes colocamos
operações custosas dentro de loops, o que acarretará na
execução desta operação o mesmo número de vezes que o
loop for executado. Na maioria dos casos, esse código
custoso faz sempre a mesma coisa, ou seja, é um cálculo
que independe de qualquer valor proveniente do loop.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 22
2 Boas Práticas de Programação -
Código
2.4 Minimizar Trabalho dentro de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 23
2 Boas Práticas de Programação -
Código
2.4 Minimizar Trabalho dentro de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 24
2 Boas Práticas de Programação -
Código
2.5 Busca de um Elemento em um Array
- Este é outro dos pontos essenciais para ganharmos em
performance na aplicação. Muitas vezes colocamos
procuramos um elemento dentro de um array. Ao
localizarmos o elemento o correto é pararmos a busca,
assim economiza-se um processamento precioso.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 25
2 Boas Práticas de Programação -
Código
2.5 Busca de um Elemento em um Array
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 26
2 Boas Práticas de Programação -
Código
2.6 Code Caching
- Code caching significa salvar um determinado valor que
é proveniente de algum cálculo mais complexo em um
membro interno que, por sua vez, será exposto pela
classe. Geralmente utilizamos essa técnica quando o valor
é frequentemente utilizado e, se for sempre calculado,
teremos uma perda de performance, já que o cálculo seria
efetuado o mesmo número de vezes que a propriedade é
invocada.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 27
2 Boas Práticas de Programação -
Código
2.6 Code Caching
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 28
1 Boas Práticas de Programação -
Código
2.7 Atribuição de Valor com Somente Duas
Possibilidades
- Para variáveis que somente poderão receber duas
possibilidades de valores, baseadas em uma estrutura de
condição SE, iniciar a mesma com o valor mais provável e
somente alterar se a condição for verdadeira, assim
elimina-se o processamento do SENÃO.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 29
3 Boas Práticas de Programação -
Código
2.7 Atribuição de Valor com Somente Duas
Possibilidades
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 30
2 Boas Práticas de Programação -
Código
2.7 Atribuição de Valor com Somente Duas
Possibilidades
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 31
2 Boas Práticas de Programação -
Código
2.8 Execução de Funções Desnecessárias
- Mais um item para melhor a performance do sistema. Se
a função não é necessária no momento, não a execute.
Outras duas questões:
1) Se ela for necessária, será que está utilizando da forma
correta?
2) Não existe uma função mais performática do que a que
está utilizando?
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 32
2 Boas Práticas de Programação -
Código
2.8 Execução de Funções Desnecessárias
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 33
2 Boas Práticas de Programação -
Código
2.9 Abre e Fecha Chaves (Blocos de Comandos)
- Para a maioria das linguagens é opcional o uso do abre e
fecha chaves ({ }) quando há somente uma linha de
comando no bloco. O questão é que quando se insere mais
uma linha elas devem ser colocadas, pois a execução do
código não será a esperada. Dado isto, a sugestão é usar
sempre.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 34
2 Boas Práticas de Programação -
Código
2.9 Abre e Fecha Chaves (Blocos de Comandos)
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 35
2 Boas Práticas de Programação -
Código
2.9 Abre e Fecha Chaves (Blocos de Comandos)
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 36
2 Boas Práticas de Programação -
Código
2.9 Abre e Fecha Chaves (Blocos de Comandos)
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 37
2 Boas Práticas de Programação -
Código
2.10 CTRL+C/CTRL+V
- Nunca utilizar o CTRL+C/CTRL+V. Se precisar repetir um
trecho de código, o melhor a ser feito, é criar uma função
com o trecho e fazer os dois pontos chamarem a função.
- Princípio da Janela Quebrada
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 38
3 Conclusões
- Economia de hardware;
- Facilidade na manutenção e inclusão de novas
funcionalidades;
- Respostas mais rápidas (para o cliente);
- Principal: é de extrema importância colocar o que foi
apresentado em prática, pois sem isto os benefícios
citados não acontecem.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 39
Perguntas
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 40
Referências
AÉCE, I. Boas Práticas de Programação. Disponível em:
http://www.linhadecodigo.com.br/artigo/1310/boas-praticas-de-programacao.aspx.
Acesso em 15 mar 2016.
BRUNO, W. Boas Práticas de Programação - Filosofias de Desenvolvimento. Disponível
em: http://wbruno.com.br/php/boas-praticas-de-programacao-filosofias-de-
desenvolvimento. Acesso em 01 mar 2016.
FILHO, J. O. M. Programação Orientada à Gambiarra. Disponível em:
http://pt.slideshare.net/josenaldomatos/programao-orientada-a-gambiarra-30097904.
Acesso em 28 mar 2016.
MARZAGÃO, L. F. Boas Práticas em Programação. Disponível em:
http://dulimind.blogspot.com.br/2014/05/boas-praticas-em-programacao-parte-
01.html. Acesso em 16 mar 2016.
TAVARES, L. Boas Práticas de Programação. Disponível em:
http://www.devmedia.com.br/boas-praticas-de-programacao/31163. Acesso em 09 mar
2016.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 41
Referências
UNIVERSIDADE ESTADUAL DE CAMPINAS. Linguagem e Técnicas de Programação - Boas
Práticas. Disponível em:
http://www.ft.unicamp.br/liag/wp/robocode_files/qualidade.pdf. Acesso em 08 mar
2016.
WIKIPEDIA. Teoria das Janelas Partidas. Disponível em:
https://pt.wikipedia.org/wiki/Teoria_das_Janelas_Partidas. Acesso em 02 mar 2016.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 42
Contato
Anderson Augustinho
Analista de Sistemas
Professor e Instrutor Java
andersonaug@celepar.pr.gov.br
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 43
Obrigado!

Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 44

Mais conteúdo relacionado

Mais procurados

Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...
Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...
Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...Joao Galdino Mello de Souza
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendiVinta Software
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareDextra Sistemas / Etec Itu
 
Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)Fernando Kenji Kamei
 
Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Joao Galdino Mello de Souza
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Joao Galdino Mello de Souza
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)Renato Pina
 

Mais procurados (20)

Automação do Workload e a TI Bimodal
Automação do Workload e a TI BimodalAutomação do Workload e a TI Bimodal
Automação do Workload e a TI Bimodal
 
Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...
Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...
Software Optimization and Tuning Techniques for z13 (As mentiras do ontem, um...
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
5 meses de python o que aprendi
5 meses de python  o que aprendi5 meses de python  o que aprendi
5 meses de python o que aprendi
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)Desenvolvimento de Software com Extreme Programming (XP)
Desenvolvimento de Software com Extreme Programming (XP)
 
Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!O Spring está morto! Viva o Spring!
O Spring está morto! Viva o Spring!
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)
 

Semelhante a Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)

A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 
Automação Web Utilizando Keywords - Gustavo Moreira
Automação Web Utilizando Keywords - Gustavo MoreiraAutomação Web Utilizando Keywords - Gustavo Moreira
Automação Web Utilizando Keywords - Gustavo Moreiragutssc
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarrasdebian-rs
 
Inspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágilInspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágilAgile_Clinic
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasKleitor Franklint Correa Araujo
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interaçãoHumberto Cepep
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trataRoni Reis
 
Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento carlos Alberto
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoLeonardo Melo Santos
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Daniel Carvalhinho
 

Semelhante a Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar) (20)

Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
scrumbut
scrumbutscrumbut
scrumbut
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
Automação Web Utilizando Keywords - Gustavo Moreira
Automação Web Utilizando Keywords - Gustavo MoreiraAutomação Web Utilizando Keywords - Gustavo Moreira
Automação Web Utilizando Keywords - Gustavo Moreira
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarras
 
Aula 3 - Engenharia de Software
Aula 3 - Engenharia de SoftwareAula 3 - Engenharia de Software
Aula 3 - Engenharia de Software
 
Inspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágilInspeção de Código Clipper - Case de um projeto ágil
Inspeção de Código Clipper - Case de um projeto ágil
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 
Introdução ao XP
Introdução ao XPIntrodução ao XP
Introdução ao XP
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trata
 
Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento Apresentação Metodologias Ágeis de desenvolvimento
Apresentação Metodologias Ágeis de desenvolvimento
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Curso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - OtimizaçãoCurso de J2ME - Parte 04 - Otimização
Curso de J2ME - Parte 04 - Otimização
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
 
Refatoração de Código Legado
Refatoração de Código LegadoRefatoração de Código Legado
Refatoração de Código Legado
 

Mais de Joao Galdino Mello de Souza

Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Joao Galdino Mello de Souza
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Joao Galdino Mello de Souza
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Joao Galdino Mello de Souza
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Joao Galdino Mello de Souza
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Joao Galdino Mello de Souza
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Joao Galdino Mello de Souza
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Joao Galdino Mello de Souza
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Joao Galdino Mello de Souza
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Joao Galdino Mello de Souza
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Joao Galdino Mello de Souza
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Joao Galdino Mello de Souza
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Joao Galdino Mello de Souza
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Joao Galdino Mello de Souza
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Joao Galdino Mello de Souza
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)Joao Galdino Mello de Souza
 
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)Joao Galdino Mello de Souza
 

Mais de Joao Galdino Mello de Souza (20)

Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
 
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
 

Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)

  • 1. Qualidade no Desenvolvimento de Sistemas Melhores Práticas de Programação Anderson Augustinho Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 1
  • 2. Agenda 1 Boas Práticas Gerais de Programação 2 Boas Práticas de Programação - Código 3 Conclusões Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 2
  • 3. 1 Boas Práticas Gerais de Programação 1.1 Comentários - No início de cada arquivo deve ter seu nome, uma descrição do que o arquivo contém, quem o criou e em qual data. - Antes de cada função, deve ser explicado o que ela faz, o que ela retorna e qual o comportamento das variáveis. Use como premissa que alguém consegue definir se irá ou não usar a rotina e poderá usá-la apenas lendo o comentário, sem precisar conhecer o código. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 3
  • 4. 1 Boas Práticas Gerais de Programação 1.1 Comentários - Se a função ficar grande, é importante explicar na criação das variáveis o que elas fazem. Comente cada grande parte do código. Por exemplo: quando o programa entra em um if e quando entra em um else. - Não precisa comentar coisas óbvias como explicar que contador++ está incrementando o contador. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 4
  • 5. 1 Boas Práticas Gerais de Programação 1.2 Nomes Claros às Variáveis - Uma variável não precisa ter nome e sobrenome, mas não deve ser chamada apenas por uma letra. - Seu nome deve ter um significado lógico, de forma que alguém apenas lendo o nome consiga imaginar o que deve ser armazenado na variável. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 5
  • 6. 1 Boas Práticas Gerais de Programação 1.3 Evite mapeamento mental - Às vezes vemos variáveis nomeadas com uma letra só. Sem dúvida são perfeitamente aceitáveis em um loop (i é a mais comum), mas desde que o loop seja pequeno e não haja conflitos. Em outros contextos, as variáveis de uma só letra certamente serão problemáticas, pois o leitor terá que fazer mapeamento mental daquela letra para o seu real significado. Com o passar do tempo, nem o próprio autor do código lembrará qual o verdadeiro conceito daquela variável de uma letra só. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 6
  • 7. 1 Boas Práticas Gerais de Programação 1.4 Use Tipagem Forte Logicamente - Algumas linguagens são fracamente tipada. Ou seja, ele não checa se você está usando corretamente os tipos da linguagem. Você pode inserir um texto em uma variável numérica, por exemplo. Pode, mas não deveria. - Tome o cuidado de usar variáveis do tipo correspondente ao seu uso. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 7
  • 8. 1 Boas Práticas Gerais de Programação 1.5 Use Comandos Claros e Usualmente Conhecidos - A maioria das linguagens possuem mais de uma forma para resolver uma situação. Tente sempre usar a mais comum. Pode ser que a manutenção do programa seja feita por uma pessoa que não tenha muito conhecimento da linguagem e não conheça o comando utilizado. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 8
  • 9. 1 Boas Práticas Gerais de Programação 1.6 Identação - É algo simples e que facilita incrivelmente tanto a construção de um programa como sua manutenção. - Usar, se possível, o próprio tab ao invés de espaços, para que seja fácil manter todas as linhas iniciando-se na mesma coluna. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 9
  • 10. 1 Boas Práticas Gerais de Programação 1.7 Funções - A primeira e mais importe regra é que funções devem ser pequenas. A segunda regra é que devem ser menores ainda. - Funções pequenas são fáceis de entender e facilitam o cumprimento do princípio: "faça apenas uma coisa". - A regra de ouro é: "Funções devem fazer uma coisa. Devem fazê-la bem. Devem fazer somente essa coisa." Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 10
  • 11. 1 Boas Práticas Gerais de Programação 1.7 Funções - O melhor jeito de saber se a função está fazendo "mais do que uma coisa" é verificar se é possível extrair outra função de dentro dela. - Funções devem fazer algo ou responder algo, nunca os dois. Ou a função deve alterar o estado de um objeto ou deve retornar alguma informação sobre o objeto. Fazer as duas coisas em geral leva a confusões. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 11
  • 12. 1 Boas Práticas Gerais de Programação 1.8 Testes - Construir um software não é somente escrever código e vê-lo funcionar, é saber que aquele código será manutenível e que outras pessoas vão alterá-lo. Por isto teste é fundamental. - Quem desenvolve tem que ser responsável por aquilo que escreve e saber que seu sistema tem que continuar funcionando, por isto toda linha escrita deve estar testada. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 12
  • 13. 1 Boas Práticas Gerais de Programação 1.8 Testes - Muitas empresas veem testes como gastos maiores no projeto, o que de fato acontece, porém a qualidade do software produzido é algo significante. Quando não se produz teste automatizado, a quantidade de testes manuais são maiores e muitas vezes o custo desses testes também é maior. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 13
  • 14. 2 Boas Práticas de Programação - Código - Para se ter um código bem enxuto e com boa qualidade não basta apenas termos convenção de nomes, classes, variáveis, entre outros. Precisamos ter um padrão para algumas situações para melhorarmos não somente a performance do código que está sendo escrito, mas também a qualidade de ordenação para que, futuros desenvolvedores, ao olharem o nosso código em uma manutenção, consigam facilmente identificar e assim trabalhar em cima do problema e não reaprender tudo o que foi feito, assim desperdiçando tempo e dinheiro. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 14
  • 15. 2 Boas Práticas de Programação - Código 2.1 Operadores de Curto Circuito - Operadores que operam em curto-circuito fazem parte de algumas linguagens de programação. Esses operadores ajudam a poupar verificações desnecessárias em nosso código. if(condicao1 && condicao2) { //… } if(condicao1 || condicao2) { //… } Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 15
  • 16. 2 Boas Práticas de Programação - Código 2.1 Operadores de Curto Circuito Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 16
  • 17. 2 Boas Práticas de Programação - Código 2.2 Teste de Ordenação Lógica - Um detalhe bastante importante que muitas vezes não se presta atenção é quando utilizamos o bloco switch. Neste caso, o ideal é sempre ordenar a lista de possibilidades da mais frequente para a menos frequente. Isso evitará que a avaliação seja feita em vários itens, tendo assim uma perda de performance, pois se o item frequente está na último posição a ser avaliada, ela deverá passar por todas as outras antes. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 17
  • 18. 2 Boas Práticas de Programação - Código 2.2 Teste de Ordenação Lógica Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 18
  • 19. 2 Boas Práticas de Programação - Código 2.3 Fusão de Loops - A fusão de loops é quando usam-se dois loops distintos para operar o mesmo conjunto de elementos e, em cada um deles, efetuar uma ação diferente. Na maioria das vezes utilizamos isso em coleções para alterar algum valor, ou algo do tipo. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 19
  • 20. 2 Boas Práticas de Programação - Código 2.3 Fusão de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 20
  • 21. 2 Boas Práticas de Programação - Código 2.3 Fusão de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 21
  • 22. 2 Boas Práticas de Programação - Código 2.4 Minimizar Trabalho dentro de Loops - Este é um dos pontos essenciais para ganharmos em performance na aplicação. Muitas vezes colocamos operações custosas dentro de loops, o que acarretará na execução desta operação o mesmo número de vezes que o loop for executado. Na maioria dos casos, esse código custoso faz sempre a mesma coisa, ou seja, é um cálculo que independe de qualquer valor proveniente do loop. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 22
  • 23. 2 Boas Práticas de Programação - Código 2.4 Minimizar Trabalho dentro de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 23
  • 24. 2 Boas Práticas de Programação - Código 2.4 Minimizar Trabalho dentro de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 24
  • 25. 2 Boas Práticas de Programação - Código 2.5 Busca de um Elemento em um Array - Este é outro dos pontos essenciais para ganharmos em performance na aplicação. Muitas vezes colocamos procuramos um elemento dentro de um array. Ao localizarmos o elemento o correto é pararmos a busca, assim economiza-se um processamento precioso. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 25
  • 26. 2 Boas Práticas de Programação - Código 2.5 Busca de um Elemento em um Array Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 26
  • 27. 2 Boas Práticas de Programação - Código 2.6 Code Caching - Code caching significa salvar um determinado valor que é proveniente de algum cálculo mais complexo em um membro interno que, por sua vez, será exposto pela classe. Geralmente utilizamos essa técnica quando o valor é frequentemente utilizado e, se for sempre calculado, teremos uma perda de performance, já que o cálculo seria efetuado o mesmo número de vezes que a propriedade é invocada. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 27
  • 28. 2 Boas Práticas de Programação - Código 2.6 Code Caching Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 28
  • 29. 1 Boas Práticas de Programação - Código 2.7 Atribuição de Valor com Somente Duas Possibilidades - Para variáveis que somente poderão receber duas possibilidades de valores, baseadas em uma estrutura de condição SE, iniciar a mesma com o valor mais provável e somente alterar se a condição for verdadeira, assim elimina-se o processamento do SENÃO. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 29
  • 30. 3 Boas Práticas de Programação - Código 2.7 Atribuição de Valor com Somente Duas Possibilidades Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 30
  • 31. 2 Boas Práticas de Programação - Código 2.7 Atribuição de Valor com Somente Duas Possibilidades Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 31
  • 32. 2 Boas Práticas de Programação - Código 2.8 Execução de Funções Desnecessárias - Mais um item para melhor a performance do sistema. Se a função não é necessária no momento, não a execute. Outras duas questões: 1) Se ela for necessária, será que está utilizando da forma correta? 2) Não existe uma função mais performática do que a que está utilizando? Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 32
  • 33. 2 Boas Práticas de Programação - Código 2.8 Execução de Funções Desnecessárias Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 33
  • 34. 2 Boas Práticas de Programação - Código 2.9 Abre e Fecha Chaves (Blocos de Comandos) - Para a maioria das linguagens é opcional o uso do abre e fecha chaves ({ }) quando há somente uma linha de comando no bloco. O questão é que quando se insere mais uma linha elas devem ser colocadas, pois a execução do código não será a esperada. Dado isto, a sugestão é usar sempre. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 34
  • 35. 2 Boas Práticas de Programação - Código 2.9 Abre e Fecha Chaves (Blocos de Comandos) Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 35
  • 36. 2 Boas Práticas de Programação - Código 2.9 Abre e Fecha Chaves (Blocos de Comandos) Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 36
  • 37. 2 Boas Práticas de Programação - Código 2.9 Abre e Fecha Chaves (Blocos de Comandos) Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 37
  • 38. 2 Boas Práticas de Programação - Código 2.10 CTRL+C/CTRL+V - Nunca utilizar o CTRL+C/CTRL+V. Se precisar repetir um trecho de código, o melhor a ser feito, é criar uma função com o trecho e fazer os dois pontos chamarem a função. - Princípio da Janela Quebrada Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 38
  • 39. 3 Conclusões - Economia de hardware; - Facilidade na manutenção e inclusão de novas funcionalidades; - Respostas mais rápidas (para o cliente); - Principal: é de extrema importância colocar o que foi apresentado em prática, pois sem isto os benefícios citados não acontecem. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 39
  • 40. Perguntas Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 40
  • 41. Referências AÉCE, I. Boas Práticas de Programação. Disponível em: http://www.linhadecodigo.com.br/artigo/1310/boas-praticas-de-programacao.aspx. Acesso em 15 mar 2016. BRUNO, W. Boas Práticas de Programação - Filosofias de Desenvolvimento. Disponível em: http://wbruno.com.br/php/boas-praticas-de-programacao-filosofias-de- desenvolvimento. Acesso em 01 mar 2016. FILHO, J. O. M. Programação Orientada à Gambiarra. Disponível em: http://pt.slideshare.net/josenaldomatos/programao-orientada-a-gambiarra-30097904. Acesso em 28 mar 2016. MARZAGÃO, L. F. Boas Práticas em Programação. Disponível em: http://dulimind.blogspot.com.br/2014/05/boas-praticas-em-programacao-parte- 01.html. Acesso em 16 mar 2016. TAVARES, L. Boas Práticas de Programação. Disponível em: http://www.devmedia.com.br/boas-praticas-de-programacao/31163. Acesso em 09 mar 2016. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 41
  • 42. Referências UNIVERSIDADE ESTADUAL DE CAMPINAS. Linguagem e Técnicas de Programação - Boas Práticas. Disponível em: http://www.ft.unicamp.br/liag/wp/robocode_files/qualidade.pdf. Acesso em 08 mar 2016. WIKIPEDIA. Teoria das Janelas Partidas. Disponível em: https://pt.wikipedia.org/wiki/Teoria_das_Janelas_Partidas. Acesso em 02 mar 2016. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 42
  • 43. Contato Anderson Augustinho Analista de Sistemas Professor e Instrutor Java andersonaug@celepar.pr.gov.br Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 43
  • 44. Obrigado!  Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 44