SlideShare uma empresa Scribd logo
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
Abstract
1 Filosofias de Programação
2 Boas Práticas Gerais de Programação
3 Boas Práticas de Programação - Código
4 POG – Programação Orientada à Gambiarra
5 Conclusões
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 2
Abstract
- Com a vinda da Internet, cada vez mais os sistemas são
desenvolvidos para trabalhar em ambientes distribuídos,
por exemplo: aplicativo web em um servidor, banco de
dados em outro e assim por diante. Para que se obtenha o
melhor potencial destes, é obvio que o desempenho dos
ativos que o cercam têm que serem bom (servidores,
ativos de redes, outros sistemas, entre outros), mas o foco
principal deste artigo é o desenvolvimento do sistema em
si.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 3
Abstract
- Desenvolver utilizando as melhores praticas de
programação, aproveitar todos os recursos que as
linguagens dispõem e produzir um código limpo são
primordiais para que se miniminizem as falhas e se
construa um sistema de qualidade, assim será possível
racionar os recursos envolvidos e minimizar os custos.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 4
1 Filosofias de Programação
1.1 SOC - Separation Of Concerns
- Separação de interesses. Dividir rotinas em trechos
pequenos quanto possível, e tanto quanto fizer sentido.
Quando se tem um grande problema para resolver, deve-
se começar separando esse “problemão”, em “problemas
menores”, e resolver cada problema de uma vez. Isolando
em pequenas partes focadas será privilegiado o
reaproveitamento do código.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 5
1 Filosofias de Programação
1.2 DRY – Don't Repeat Yourself
- Não repita a si mesmo. Se já existe um trecho de código
que resolve uma dada situação e, logo mais adiante, se
depara com a mesma situação, não deve-se desenvolver a
mesma rotina ou muito menos replicá-la e sim usar o
mesmo trecho. Sem Ctrl+C / Ctrl+V.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 6
1 Filosofias de Programação
1.3 DIE - Duplication is Evil
- Duplicação é ruim. Ruim para o desenvolvedor, para o
desenvolvimento, para futuras correções. Não duplique
códigos. Exemplo: Se já existe uma rotina de conexão ao
banco de dados, não duplicar essa rotina.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 7
1 Filosofias de Programação
1.4 KISS = Keep It Simple, Stupid
- Manter simples. Descartar toda a complexidade que não
for realmente necessária. Lógico que nem tudo é simples.
Existem coisas que realmente não são. Porém a idéia do
KISS, não é deixar fácil, mas sim evitar complicar. Evitar
aumentar o custo e entregar exatamente o que foi
requisitado. E apenas isso. A aplicação só ganhará com
isso. KISS é fazer menos, e não fazer da forma mais fácil.
Manter o foco.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 8
1 Filosofias de Programação
1.5 YAGNI = You Aren’t Going Need It
- Parecido com o conceito anterior. “Você não vai precisar
disso”. Resumindo: não complicar ou inventando o que
não será usado. É uma tentação comum querermos
desenvolver o sistema mais incrível do mundo, com as
melhores funcionalidades. Seja racional. Preveja a
expansão e escalabilidade, porém não fique dando voltas
sem sair do lugar ou entregar o que não foi pedido, por
estar implementando algo que nem era requisito e nem
necessário naquele momento.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 9
1 Filosofias de Programação
1.6 Teoria da Janela Quebrada
- Livro de George L. Kelling e Catherine Coles
- Imagine um edifício com algumas janelas quebradas. Se
as janelas não são reparadas, a tendência é que vândalos
quebrem mais janelas.
- Uma estratégia de sucesso para prevenir o vandalismo,
dizem os autores do estudo, é resolver os problemas
quando eles são pequenos, assim a probabilidade dos
vândalos estragarem mais é menor.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 10
2 Boas Práticas Gerais de Programação
2.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. 11
2 Boas Práticas Gerais de Programação
2.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. 12
2 Boas Práticas Gerais de Programação
2.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. 13
2 Boas Práticas Gerais de Programação
2.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. 14
2 Boas Práticas Gerais de Programação
2.4 Declaração de variáveis separadas da lógica
- Ter como prática declarar todas as variáveis que um
programa irá utilizar logo após o título da função. Desta
forma fica muito mais simples para quem irá fazer a
manutenção do código entendê-lo.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 15
2 Boas Práticas Gerais de Programação
2.5 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. 16
2 Boas Práticas Gerais de Programação
2.6 Nomes de Classes
- Classes e Objetos devem ter nomes com substantivos
como por exemplo Pessoa, Cliente, Conta.
- Evite usar verbos porque estes devem ser usados para
métodos ou funções.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 17
2 Boas Práticas Gerais de Programação
2.7 Princípio da Responsabilidade Única
- O princípio da responsabilidade única estabelece que
uma classe ou módulo deve ter uma, e apenas uma,
responsabilidade.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 18
2 Boas Práticas Gerais de Programação
2.8 Nomes de Métodos
- Métodos (ou funções) devem ser nomeadas com verbos,
como por exemplo realizarPagamento, apagarPagina ou
salvar.
- Métodos que acessam, mudam ou predicam devem ser
nomeados de acordo com o valor deles e prefixados com
os verbos get, set ou is, como por exemplo getNome,
isRealizadoPagamento ou setCor.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 19
2 Boas Práticas Gerais de Programação
2.9 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. 20
2 Boas Práticas Gerais de Programação
2.10 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. 21
2 Boas Práticas Gerais de Programação
2.11 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. 22
2 Boas Práticas Gerais de Programação
2.11 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. 23
2 Boas Práticas Gerais de Programação
2.12 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. 24
2 Boas Práticas Gerais de Programação
2.12 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. 25
2 Boas Práticas Gerais de Programação
2.13 Programe para os Outros e não para Você
- Lembre-se que na vida real poder ser que não seja você
que irá corrigir o seu programa. Assim, deve-se sempre
programar de forma simples e clara, de forma que
qualquer pessoa que precise alterá-lo o faça facilmente.
- Se pensar que um programa confuso pode garantir seu
emprego, provavelmente vai o perder rapidamente e
muito dificilmente conseguirá recomendação para outro,
dada a pouca qualidade do trabalho.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 26
2 Boas Práticas Gerais de Programação
2.13 Programe para os Outros e não para Você
- Lembre-se: que você também precisará corrigir
programas dos outros. Garanto que se os outros não
seguirem as regras, você vai entender claramente porque
elas são tão importantes.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 27
3 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. 28
3 Boas Práticas de Programação - Código
- Na sequência serão apresentadas algumas técnicas que
não são muito utilizadas no dia-a-dia dos programadores
pois são pequenos detalhes que influenciam na
performance e na escrita de um bom código. Essas boas
práticas vão desde a ter um código elegante até como
melhorá-lo.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 29
3 Boas Práticas de Programação - Código
3.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. 30
3 Boas Práticas de Programação - Código
3.1 Operadores de Curto Circuito
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 31
3 Boas Práticas de Programação - Código
3.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. 32
3 Boas Práticas de Programação - Código
3.2 Teste de Ordenação Lógica
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 33
3 Boas Práticas de Programação - Código
3.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. 34
3 Boas Práticas de Programação - Código
3.3 Fusão de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 35
3 Boas Práticas de Programação - Código
3.3 Fusão de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 36
3 Boas Práticas de Programação - Código
3.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. 37
3 Boas Práticas de Programação - Código
3.4 Minimizar Trabalho dentro de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 38
3 Boas Práticas de Programação - Código
3.4 Minimizar Trabalho dentro de Loops
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 39
3 Boas Práticas de Programação - Código
3.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. 40
3 Boas Práticas de Programação - Código
3.5 Busca de um Elemento em um Array
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 41
3 Boas Práticas de Programação - Código
3.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. 42
3 Boas Práticas de Programação - Código
3.6 Code Caching
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 43
3 Boas Práticas de Programação - Código
3.7 Números Mágicos
- Os números mágicos são aqueles números que temos no
código que referenciam índices de arrays, campos de
colunas do banco de dados, contadores, etc.. Em alguns
casos, como por exemplo, para referenciar as colunas do
ResultSet (consulta ao banco de dados) é sempre mais
performático do que passar o nome do campo, mas isso
dificulta a legibilidade do código, principalmente se
precisar dar manutenção neste código mais tarde.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 44
3 Boas Práticas de Programação - Código
3.7 Números Mágicos
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 45
3 Boas Práticas de Programação - Código
3.7 Números Mágicos
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 46
3 Boas Práticas de Programação - Código
3.8 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. 47
3 Boas Práticas de Programação - Código
3.8 Atribuição de Valor com Somente Duas
Possibilidades
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 48
3 Boas Práticas de Programação - Código
3.8 Atribuição de Valor com Somente Duas
Possibilidades
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 49
3 Boas Práticas de Programação - Código
3.9 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. 50
3 Boas Práticas de Programação - Código
3.9 Execução de Funções Desnecessárias
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 51
3 Boas Práticas de Programação - Código
3.10 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. 52
3 Boas Práticas de Programação - Código
3.10 Abre e Fecha Chaves (Blocos de Comandos)
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 53
3 Boas Práticas de Programação - Código
3.10 Abre e Fecha Chaves (Blocos de Comandos)
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 54
3 Boas Práticas de Programação - Código
3.10 Abre e Fecha Chaves (Blocos de Comandos)
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 55
3 Boas Práticas de Programação - Código
3.11 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.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 56
4 POG – Programação Orientada à Gambiarra
- Esta solução é ótima, mas não temos tempo para isto.
Faça a boa.
- A culpa é do Hardware.
- É só reiniciar que funciona.
- É fácil! Não vejo dificuldade em fazer isto. É só um if.
- Tive que arrumar no banco de dados. Se o problema
voltar me avisa.
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 57
4 POG – Programação Orientada à Gambiarra
- O código está certo, deve ser problema com a massa de
dados.
- Deixa estourar a bomba. Aí se vierem atrás de mim eu
vejo o que faço.
- Eu fiz somente o que foi especificado.
- Quando eu cheguei já estava assim.
- É só um botão. O que pode dar errado?
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 58
5 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. 59
Perguntas
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 60
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. 61
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. 62
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. 63
Obrigado!
Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 64

Mais conteúdo relacionado

Mais procurados

Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?
Joao Galdino Mello de Souza
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
Leonardo Fernandes
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
Better Developer
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
Josenaldo de Oliveira Matos Filho
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
Paulino Michelazzo
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudar
Better Developer
 
SETIC Scrum & XP
SETIC Scrum & XPSETIC Scrum & XP
SETIC Scrum & XP
Fernando Costa
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Better Developer
 
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
Vinta Software
 
Inteligência Operacional por André Balparda - AMAXONIA
Inteligência Operacional por André Balparda - AMAXONIAInteligência Operacional por André Balparda - AMAXONIA
Inteligência Operacional por André Balparda - AMAXONIA
Joao Galdino Mello de Souza
 
Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
Josenaldo de Oliveira Matos Filho
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concreto
Hélio Medeiros
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
Josenaldo de Oliveira Matos Filho
 
Big design up front (BDUF)
Big design up front (BDUF)Big design up front (BDUF)
Big design up front (BDUF)
Gilmar Pupo
 
Automatizando testes em 4 passos
Automatizando testes em 4 passosAutomatizando testes em 4 passos
Automatizando testes em 4 passos
Hélio Medeiros
 
CI: Integração Contínua ou Isolamento Contínuo?
CI: Integração Contínua ou Isolamento Contínuo?CI: Integração Contínua ou Isolamento Contínuo?
CI: Integração Contínua ou Isolamento Contínuo?
Camilla Crispim
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
edgarddavidson.com
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador Pragmático
Tadeu Marinho
 
Enter SCRUM
Enter SCRUMEnter SCRUM
Enter SCRUM
Breno Campos
 
PostgreSQL Rock Star
PostgreSQL Rock StarPostgreSQL Rock Star
PostgreSQL Rock Star
Fabio Telles Rodriguez
 

Mais procurados (20)

Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Programação Orientada a Gambiarra
Programação Orientada a GambiarraProgramação Orientada a Gambiarra
Programação Orientada a Gambiarra
 
POG nunca mais - SOLISC
POG nunca mais - SOLISCPOG nunca mais - SOLISC
POG nunca mais - SOLISC
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudar
 
SETIC Scrum & XP
SETIC Scrum & XPSETIC Scrum & XP
SETIC Scrum & XP
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
 
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
 
Inteligência Operacional por André Balparda - AMAXONIA
Inteligência Operacional por André Balparda - AMAXONIAInteligência Operacional por André Balparda - AMAXONIA
Inteligência Operacional por André Balparda - AMAXONIA
 
Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!Coding Dojo em 10 Minutos!
Coding Dojo em 10 Minutos!
 
Test Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concretoTest Driven Development - Em busca de feedback util e concreto
Test Driven Development - Em busca de feedback util e concreto
 
A saga do desenvolvedor java
A saga do desenvolvedor javaA saga do desenvolvedor java
A saga do desenvolvedor java
 
Big design up front (BDUF)
Big design up front (BDUF)Big design up front (BDUF)
Big design up front (BDUF)
 
Automatizando testes em 4 passos
Automatizando testes em 4 passosAutomatizando testes em 4 passos
Automatizando testes em 4 passos
 
CI: Integração Contínua ou Isolamento Contínuo?
CI: Integração Contínua ou Isolamento Contínuo?CI: Integração Contínua ou Isolamento Contínuo?
CI: Integração Contínua ou Isolamento Contínuo?
 
O programador pragmático
O programador pragmáticoO programador pragmático
O programador pragmático
 
O Programador Pragmático
O Programador PragmáticoO Programador Pragmático
O Programador Pragmático
 
Enter SCRUM
Enter SCRUMEnter SCRUM
Enter SCRUM
 
PostgreSQL Rock Star
PostgreSQL Rock StarPostgreSQL Rock Star
PostgreSQL Rock Star
 

Semelhante a Qualidade no desenvolvimento de sistemas

Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
diegomcunha
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
Felippe Rodrigo Puhle
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarras
debian-rs
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
DanielChristofolli
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
rafaelberlanda
 
Revista programar 12
Revista programar 12Revista programar 12
Revista programar 12
Filipe Bezerra Sousa
 
Test driven development
Test driven developmentTest driven development
Test driven development
clauvane1708
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
AndreCosta502039
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
FilipiAtaideArruda
 
300 ideias para programar
300 ideias para programar300 ideias para programar
300 ideias para programar
Adrielle Dri
 
Boas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoBoas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em código
Mariana de Azevedo Santos
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
elliando dias
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
gustavoferrazfontes
 
poster
posterposter
poster
Ruan Costa
 
Information Expert.pdf
Information Expert.pdfInformation Expert.pdf
Information Expert.pdf
ssuserefabf71
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
Ismael
 
Debugging node
Debugging nodeDebugging node
Debugging node
Jeniffer Nolasco
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLID
Hélio Medeiros
 
Apres s4
Apres s4 Apres s4
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
Filipe Portes
 

Semelhante a Qualidade no desenvolvimento de sistemas (20)

Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Java - Boas práticas
Java - Boas práticasJava - Boas práticas
Java - Boas práticas
 
Administradores e suas gambiarras
Administradores e suas gambiarrasAdministradores e suas gambiarras
Administradores e suas gambiarras
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Revista programar 12
Revista programar 12Revista programar 12
Revista programar 12
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
300 ideias para programar
300 ideias para programar300 ideias para programar
300 ideias para programar
 
Boas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoBoas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em código
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
poster
posterposter
poster
 
Information Expert.pdf
Information Expert.pdfInformation Expert.pdf
Information Expert.pdf
 
O que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São PauloO que vi na QCon 2012 São Paulo
O que vi na QCon 2012 São Paulo
 
Debugging node
Debugging nodeDebugging node
Debugging node
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLID
 
Apres s4
Apres s4 Apres s4
Apres s4
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 

Mais de Joao Galdino Mello de Souza

Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
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)
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 

Último (8)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 

Qualidade no desenvolvimento de sistemas

  • 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 Abstract 1 Filosofias de Programação 2 Boas Práticas Gerais de Programação 3 Boas Práticas de Programação - Código 4 POG – Programação Orientada à Gambiarra 5 Conclusões Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 2
  • 3. Abstract - Com a vinda da Internet, cada vez mais os sistemas são desenvolvidos para trabalhar em ambientes distribuídos, por exemplo: aplicativo web em um servidor, banco de dados em outro e assim por diante. Para que se obtenha o melhor potencial destes, é obvio que o desempenho dos ativos que o cercam têm que serem bom (servidores, ativos de redes, outros sistemas, entre outros), mas o foco principal deste artigo é o desenvolvimento do sistema em si. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 3
  • 4. Abstract - Desenvolver utilizando as melhores praticas de programação, aproveitar todos os recursos que as linguagens dispõem e produzir um código limpo são primordiais para que se miniminizem as falhas e se construa um sistema de qualidade, assim será possível racionar os recursos envolvidos e minimizar os custos. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 4
  • 5. 1 Filosofias de Programação 1.1 SOC - Separation Of Concerns - Separação de interesses. Dividir rotinas em trechos pequenos quanto possível, e tanto quanto fizer sentido. Quando se tem um grande problema para resolver, deve- se começar separando esse “problemão”, em “problemas menores”, e resolver cada problema de uma vez. Isolando em pequenas partes focadas será privilegiado o reaproveitamento do código. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 5
  • 6. 1 Filosofias de Programação 1.2 DRY – Don't Repeat Yourself - Não repita a si mesmo. Se já existe um trecho de código que resolve uma dada situação e, logo mais adiante, se depara com a mesma situação, não deve-se desenvolver a mesma rotina ou muito menos replicá-la e sim usar o mesmo trecho. Sem Ctrl+C / Ctrl+V. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 6
  • 7. 1 Filosofias de Programação 1.3 DIE - Duplication is Evil - Duplicação é ruim. Ruim para o desenvolvedor, para o desenvolvimento, para futuras correções. Não duplique códigos. Exemplo: Se já existe uma rotina de conexão ao banco de dados, não duplicar essa rotina. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 7
  • 8. 1 Filosofias de Programação 1.4 KISS = Keep It Simple, Stupid - Manter simples. Descartar toda a complexidade que não for realmente necessária. Lógico que nem tudo é simples. Existem coisas que realmente não são. Porém a idéia do KISS, não é deixar fácil, mas sim evitar complicar. Evitar aumentar o custo e entregar exatamente o que foi requisitado. E apenas isso. A aplicação só ganhará com isso. KISS é fazer menos, e não fazer da forma mais fácil. Manter o foco. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 8
  • 9. 1 Filosofias de Programação 1.5 YAGNI = You Aren’t Going Need It - Parecido com o conceito anterior. “Você não vai precisar disso”. Resumindo: não complicar ou inventando o que não será usado. É uma tentação comum querermos desenvolver o sistema mais incrível do mundo, com as melhores funcionalidades. Seja racional. Preveja a expansão e escalabilidade, porém não fique dando voltas sem sair do lugar ou entregar o que não foi pedido, por estar implementando algo que nem era requisito e nem necessário naquele momento. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 9
  • 10. 1 Filosofias de Programação 1.6 Teoria da Janela Quebrada - Livro de George L. Kelling e Catherine Coles - Imagine um edifício com algumas janelas quebradas. Se as janelas não são reparadas, a tendência é que vândalos quebrem mais janelas. - Uma estratégia de sucesso para prevenir o vandalismo, dizem os autores do estudo, é resolver os problemas quando eles são pequenos, assim a probabilidade dos vândalos estragarem mais é menor. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 10
  • 11. 2 Boas Práticas Gerais de Programação 2.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. 11
  • 12. 2 Boas Práticas Gerais de Programação 2.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. 12
  • 13. 2 Boas Práticas Gerais de Programação 2.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. 13
  • 14. 2 Boas Práticas Gerais de Programação 2.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. 14
  • 15. 2 Boas Práticas Gerais de Programação 2.4 Declaração de variáveis separadas da lógica - Ter como prática declarar todas as variáveis que um programa irá utilizar logo após o título da função. Desta forma fica muito mais simples para quem irá fazer a manutenção do código entendê-lo. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 15
  • 16. 2 Boas Práticas Gerais de Programação 2.5 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. 16
  • 17. 2 Boas Práticas Gerais de Programação 2.6 Nomes de Classes - Classes e Objetos devem ter nomes com substantivos como por exemplo Pessoa, Cliente, Conta. - Evite usar verbos porque estes devem ser usados para métodos ou funções. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 17
  • 18. 2 Boas Práticas Gerais de Programação 2.7 Princípio da Responsabilidade Única - O princípio da responsabilidade única estabelece que uma classe ou módulo deve ter uma, e apenas uma, responsabilidade. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 18
  • 19. 2 Boas Práticas Gerais de Programação 2.8 Nomes de Métodos - Métodos (ou funções) devem ser nomeadas com verbos, como por exemplo realizarPagamento, apagarPagina ou salvar. - Métodos que acessam, mudam ou predicam devem ser nomeados de acordo com o valor deles e prefixados com os verbos get, set ou is, como por exemplo getNome, isRealizadoPagamento ou setCor. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 19
  • 20. 2 Boas Práticas Gerais de Programação 2.9 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. 20
  • 21. 2 Boas Práticas Gerais de Programação 2.10 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. 21
  • 22. 2 Boas Práticas Gerais de Programação 2.11 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. 22
  • 23. 2 Boas Práticas Gerais de Programação 2.11 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. 23
  • 24. 2 Boas Práticas Gerais de Programação 2.12 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. 24
  • 25. 2 Boas Práticas Gerais de Programação 2.12 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. 25
  • 26. 2 Boas Práticas Gerais de Programação 2.13 Programe para os Outros e não para Você - Lembre-se que na vida real poder ser que não seja você que irá corrigir o seu programa. Assim, deve-se sempre programar de forma simples e clara, de forma que qualquer pessoa que precise alterá-lo o faça facilmente. - Se pensar que um programa confuso pode garantir seu emprego, provavelmente vai o perder rapidamente e muito dificilmente conseguirá recomendação para outro, dada a pouca qualidade do trabalho. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 26
  • 27. 2 Boas Práticas Gerais de Programação 2.13 Programe para os Outros e não para Você - Lembre-se: que você também precisará corrigir programas dos outros. Garanto que se os outros não seguirem as regras, você vai entender claramente porque elas são tão importantes. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 27
  • 28. 3 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. 28
  • 29. 3 Boas Práticas de Programação - Código - Na sequência serão apresentadas algumas técnicas que não são muito utilizadas no dia-a-dia dos programadores pois são pequenos detalhes que influenciam na performance e na escrita de um bom código. Essas boas práticas vão desde a ter um código elegante até como melhorá-lo. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 29
  • 30. 3 Boas Práticas de Programação - Código 3.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. 30
  • 31. 3 Boas Práticas de Programação - Código 3.1 Operadores de Curto Circuito Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 31
  • 32. 3 Boas Práticas de Programação - Código 3.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. 32
  • 33. 3 Boas Práticas de Programação - Código 3.2 Teste de Ordenação Lógica Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 33
  • 34. 3 Boas Práticas de Programação - Código 3.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. 34
  • 35. 3 Boas Práticas de Programação - Código 3.3 Fusão de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 35
  • 36. 3 Boas Práticas de Programação - Código 3.3 Fusão de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 36
  • 37. 3 Boas Práticas de Programação - Código 3.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. 37
  • 38. 3 Boas Práticas de Programação - Código 3.4 Minimizar Trabalho dentro de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 38
  • 39. 3 Boas Práticas de Programação - Código 3.4 Minimizar Trabalho dentro de Loops Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 39
  • 40. 3 Boas Práticas de Programação - Código 3.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. 40
  • 41. 3 Boas Práticas de Programação - Código 3.5 Busca de um Elemento em um Array Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 41
  • 42. 3 Boas Práticas de Programação - Código 3.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. 42
  • 43. 3 Boas Práticas de Programação - Código 3.6 Code Caching Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 43
  • 44. 3 Boas Práticas de Programação - Código 3.7 Números Mágicos - Os números mágicos são aqueles números que temos no código que referenciam índices de arrays, campos de colunas do banco de dados, contadores, etc.. Em alguns casos, como por exemplo, para referenciar as colunas do ResultSet (consulta ao banco de dados) é sempre mais performático do que passar o nome do campo, mas isso dificulta a legibilidade do código, principalmente se precisar dar manutenção neste código mais tarde. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 44
  • 45. 3 Boas Práticas de Programação - Código 3.7 Números Mágicos Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 45
  • 46. 3 Boas Práticas de Programação - Código 3.7 Números Mágicos Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 46
  • 47. 3 Boas Práticas de Programação - Código 3.8 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. 47
  • 48. 3 Boas Práticas de Programação - Código 3.8 Atribuição de Valor com Somente Duas Possibilidades Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 48
  • 49. 3 Boas Práticas de Programação - Código 3.8 Atribuição de Valor com Somente Duas Possibilidades Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 49
  • 50. 3 Boas Práticas de Programação - Código 3.9 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. 50
  • 51. 3 Boas Práticas de Programação - Código 3.9 Execução de Funções Desnecessárias Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 51
  • 52. 3 Boas Práticas de Programação - Código 3.10 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. 52
  • 53. 3 Boas Práticas de Programação - Código 3.10 Abre e Fecha Chaves (Blocos de Comandos) Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 53
  • 54. 3 Boas Práticas de Programação - Código 3.10 Abre e Fecha Chaves (Blocos de Comandos) Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 54
  • 55. 3 Boas Práticas de Programação - Código 3.10 Abre e Fecha Chaves (Blocos de Comandos) Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 55
  • 56. 3 Boas Práticas de Programação - Código 3.11 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. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 56
  • 57. 4 POG – Programação Orientada à Gambiarra - Esta solução é ótima, mas não temos tempo para isto. Faça a boa. - A culpa é do Hardware. - É só reiniciar que funciona. - É fácil! Não vejo dificuldade em fazer isto. É só um if. - Tive que arrumar no banco de dados. Se o problema voltar me avisa. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 57
  • 58. 4 POG – Programação Orientada à Gambiarra - O código está certo, deve ser problema com a massa de dados. - Deixa estourar a bomba. Aí se vierem atrás de mim eu vejo o que faço. - Eu fiz somente o que foi especificado. - Quando eu cheguei já estava assim. - É só um botão. O que pode dar errado? Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 58
  • 59. 5 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. 59
  • 60. Perguntas Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 60
  • 61. 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. 61
  • 62. 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. 62
  • 63. 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. 63
  • 64. Obrigado! Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. 64