desenvolvimento profissional utilizando técnicas de código limpo
TRANSCRIPT
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
1/85
Desenvolvimentoprofissional utilizando
tcnicas de cdigo limpoMarcello Torres de Oliveira Galhardo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
2/85
"Para poder considerar a si mesmo umprofissional, voc deve criar um cdigo limpo.
No h desculpa racional para no dar omelhor de si."
Robert Cecil Martin
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
3/85
Sumrio
- Introduo- Proposta de projeto- Cdigo limpo*- Software de anlise de cdigo fonte**- Concluso**- Cronograma
- Referncias
* Ainda em desenvolvimento
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
4/85
Introduo
Alguns dizem que a programao deixou deser uma preocupao.
Dizem que devemos nos preocupar commodelos e requisitos.
Outros que se a engenharia de software estiverbem elaborada, o cdigoestar bem escrito!
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
5/85
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
6/85
IntroduoO que um bom cdigo?
Existem tantas definies como existemprogramadores no mundo.
Que tal a opinio dos mais experientes?
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
7/85
IntroduoOpinies sobre um bom cdigo
"Elegante e eficiente,
cdigo limpo faz bemapenas uma coisa."
Bjarne Stroustrup,criador da linguagemde programao C++
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
8/85
IntroduoOpinies sobre um bom cdigo
"Simples e direto,pode ser lido comouma conversa, como
uma prosa."
Grady Booch, criadorda modelagem de
software UML.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
9/85
IntroduoOpinies sobre um bom cdigo
"Parece ter sido
escrito por algumque se importa."
Michael Feathers,engenheiro snior na
Object Mentor.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
10/85
IntroduoOpinies sobre um bom cdigo
"Cada rotina que vocl faz o que voc
espera."
Ward Cunningham,criador do Wiki,
cocriador da eXtremeProgramming. Lder
da comunidadeSmalltalk.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
11/85
IntroduoAinda no est convencido?
Ah! Mais o cronograma apertado!
No tenho tempo para frescura!
Meu chefe est me pressionando!
Quero mostrar produtividade!
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
12/85
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
13/85
IntroduoAt aonde vai o profissionalismo
Responda!Se voc fosse um mdico e um paciente
exigisse que voc parasse com toda aquelalavao das mos na preparao a para a
cirurgia?
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
14/85
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
15/85
IntroduoAt aonde vai o profissionalismo
Obviamente o mdico ir se recusar. Por que?Porque o mdico sabe mais que o paciente.
Ele o profissional, sem mencionar que seria
criminoso.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
16/85
IntroduoQual o custo de um cdigo "ruim"?
Perda drstica na produtividade.
Problemas com o tempo de desenvolvimento.
Alto acoplamento de cdigo.
Muitos, MUITOS programadores!
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
17/85
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
18/85
IntroduoEnto, um cdigo bem escrito ...
...simples.
...elegante.
...eficiente.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
19/85
IntroduoAgora que voc entende...
Funcionar o mnimo que se deve esperar deum cdigo...
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
20/85
Proposta de projetoObjetivos de desenvolvimento
Analisar o que um cdigo limpo.
Explicar o conceito de um cdigo limpo.
Desenvolver um aplicativo que analise o cdigofonte e d informaes de como melhora-lo.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
21/85
Cdigo limpo
"Qualquer um conselhe escrever cdigo queum computador entende. Bons programadores,
escrevem cdigo que humanos entendam."
Martin Fowler
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
22/85
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
23/85
Cdigo limpo
Como mensurara qualidade de um cdigo?
Linhasdecdigoporclasse?
Nmerodemtodos?
Nmerodeclasses?
Linhasdecdigo
spormtodo?
Nmerodeestruturasdedeciso?
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
24/85
Cdigo limpoNomes significativos
H nomes por todos os lados em um software.
Nomeamos variveis, classes, funes,parmetros, pacotes, diretrios....
J que vamos fazer muito isso, devemos fazerisso muito bem.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
25/85
Cdigo limpoNomes que revelam seu propsito
Qual o propsito deste cdigo?
public List pegarCelulasMarcadas () {List lista1 = new ArrayList();for (int[] x : umaLista)
if (x[0] == 4)lista1.add(x);
return lista1;}
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
26/85
Cdigo limpoNomes que revelam seu propsito
Por que difcil dizer o que o cdigo faz? Noh expresses complexas.
O problema no a simplicidade do cdigo,
mas seu aspecto implcito, isto , o contextoque no est explcito no cdigo.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
27/85
Cdigo limpoNomes que revelam seu propsito
Que tipos de coisas esto em umaLista?
Qual a importncia de um item na posio zerona umaLista?
Qual a importncia do valor 4?
Como eu usaria a lista retornada?
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
28/85
Cdigo limpoNomes que revelam seu propsito
E agora, qual o propsito?
public ListaDeCelulasMarcadas pegarCelulasMarcadas () {ListaDeCelulasMarcadas celulasMarcadas = new
listaDeCelulasMarcadas();for (Celula celula : tabuleiroDoJogo)
if (celula.estaMarcada())celulasMarcadas.add(celula);return celulasMarcadas;
}
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
29/85
Cdigo limpoNomes pronunciveis
Os seres humanos so bons com as palavras.Pode parecer tolo, mais todas as palavras so
pronunciveis.
class DtaCli_Rcrd {private Date dNasc;private Date dCad;private double salDisMen = 102,5;
}
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
30/85
Cdigo limpoNomes pronunciveis
timo! A classe est pronta e voc j podefalar com seu amigo sobre o bug queencontrou nela, por exemplo: "Bem, aqui no
dNasc, est tendo um problema no calculo do
SalDisMen, t vendo?"
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
31/85
Cdigo limpoNomes pronunciveis
Compare:
class Cliente {private Date dataDeNascimento;private Date dataDeCadastro;
private double saldoDisponivelPorMes = 102,5;}
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
32/85
Cdigo limpoNome de classes
Classes e objetos devem ter nomes comsubstantivos, como por exemplo: Cliente,
Usuario, Conta, Produto e etc.
Evite palavras muito usadas como Dados ou
Info, palavras que lembrem palavrasreservadas e jamais utilizem verbo na criaodo nome de uma classe.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
33/85
Cdigo limpoNome de mtodos
Os nomes de mtodos devem ter verbos comoinserir, realizar, apagar, salvar e atualizar.
Devem-se nomear mtodos de acesso,alterao e autenticao segundo seus valores
e adicionar os prefixos get, set ou is de acordocom opadro javabeans.
www.java.sun.com/products/javabeans/docs/specs
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
34/85
Cdigo limpoNome de mtodos
Quando os construtores estiveremsobrecarregados, use mtodos de fbricaestticos com nomes que descrevam os
parmetros.
Usuario usuario = Usuario.encontrePeloId(23);
melhor do que:
Usuario usuario = new Usuario(23);
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
35/85
Cdigo limpoUse nomes passveis de busca
Utilizar nomes ruins causa vrios problemas aum software, e um dos piores a dificuldade
de localiz-los.
Ao utilizar bons nomes, voc otimiza a buscapor um trecho especfico sem precisar parar
em cdigos aleatrios com letras semelhantes!Alm disto, voc otimiza o Code Complete do
editor de texto que esteja usando.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
36/85
Cdigo limpo
"A primeira regra de funes que elas devemser pequenas. A segunda que precisam serainda menores."
Robert Cecil Martin
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
37/85
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
38/85
Cdigo limpoFunes pequenas
De acordo com Robert C Martin e Kent Beck,uma funo deve conter no mximo 20 linhas
(quando estiverem muito mal escritas...).
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
39/85
Cdigo limpoFunes pequenas
No existe uma regra especfica ou algo queprove que funes pequenas so melhores.Essas afirmativas so baseadas em
experincias prprias e relatos de outros
profissionais no ramo.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
40/85
Cdigo limpoFaa apenas uma coisa
As funes devem fazer uma coisa. Devemfaz-la bem. Devem fazer apenas ela.
O verdadeiro desafio descobrir o querealmente "uma coisa".
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
41/85
Cdigo limpoFaa apenas uma coisa
Se uma funo faz apenas aqueles passos em
um nvel abaixo do nome da funo, ento elaest fazendo uma s coisa.
Apesar de tudo, o motivo de criarmos a funo para decompor um conceito em uma srie de
passos no prximo nvel de abstrao.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
42/85
Cdigo limpoUm nvel de abstrao por funo
Para confirmar que uma funo faz apenas"uma coisa"deve ser verificado se todas as
instrues dentro da funo esto no mesmo
nvel de abstrao.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
43/85
Cdigo limpoUm nvel de abstrao por funo
Vrios nveis de abstrao dentro de uma
funo sempre gera confuso.
Os leitores podem no conseguir dizer se uma
expresso determinada um conceitoessencial ou um mero detalhe.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
44/85
Cdigo limpoLer o cdigo de cima para baixo
Um cdigo deve ser lido de cima para baixo,como uma narrativa.
Utilize sujeitos, verbos e predicados.
Narrativas so frases em ordem coerente.
V do nvel de abstrao mais alto, descendoat o mais baixo.
C
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
45/85
Cdigo limpoParmetros de funes
A quantidade ideal de parmetros para umafuno zero (nula). Depois vem um(mnade), seguido de dois (dade).
necessrio evitar trs (trade). Mais do que trs
(polade), nunca devem ser usados.
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
46/85
Cdigo limpoParmetros de funes
Parmetros so complicados.
Exigem conceitos.
Do ponto de vista de testes, difcil escrevertodas as combinaes possveis
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
47/85
Cdigo limpoEvite efeitos colaterais
Se sua promete fazer apenas uma coisa, masela tambm faz outras coisas escondidas, ela
um efeito colateral.
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
48/85
Cdigo limpoEvite efeitos colaterais
Acessar uma varivel global, por exemplo,
causa um acoplamento do cdigo e torna ofluxo do sistema confuso.
Mais por que o nome efeitos colaterais? Pelasua reao ao descobrir o motivo do cdigo
no funcionar.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
49/85
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
50/85
Cdigo limpoEvite efeitos colaterais
Se for necessrio este tipo de efeito colateral,deve-se deixar explcito no nome da funo
qual a real inteno da funo.
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
51/85
Cdigo limpoParmetros de sada
Os parmetros so comumente interpretadoscomo entradas de uma funo. Se uma funoaltera o estado de um parmetro, ela deveria
alterar o estado do objeto que pertence.
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
52/85
Cdigo limpoParmetros lgicos
Passar um booleano para uma funo umaprtica horrenda, pois ele mostra
explicitamente que o mtodo faz mais de uma
coisa.
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
53/85
Cdigo limpoParmetros lgicos
paginaDebug = true;
PaginaWeb paginaWeb = PaginaWeb.renderizaPagina(paginaDebug);
Se o valor for verdadeiro ele ir renderizar umapgina de teste, se for falso (padro) ele ir
renderizar a pgina normalmente.
Cdi li
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
54/85
Cdigo limpoParmetros lgicos
public void configuraERenderizaPagina () {paginaWeb.configuraPagina();
return paginaWeb.renderizaPagina();}
Se o valor for verdadeiro ele ir renderizar uma
pgina de teste, se for falso (padro) ele irrenderizar a pgina normalmente.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
55/85
Cdigo limpoSeparao comando-consulta
Uma funo deve fazer ou responder algo, mas
no ambos.
Uma funo somente pode alterar informaes
ou retornar informaes de um objeto.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
56/85
Cdigo limpoSeparao comando-consulta
public boolean set(String atributo, String valor);
Essa funo define o valor de um atributo eretorna true se obtiver xito ou false se o
atributo no existir. Isso levaria a instrues:
if (set("nomeDeUsuario", "marcello_galhardo"))
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
57/85
Cdigo limpoSeparao comando-consulta
Imagine do ponto de vista do leitor:
Est sendo perguntado se o atributo"nomeDoUsuario" anteriormente recebeu o
valor "marcello_galhardo"?
Ou se "nomeDeUsuario" obteve xito emreceber o valor "marcello_galhardo"?
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
58/85
Cdigo limpo
"Quando voc sentir a necessidade deescrever um comentrio, chegou o momentode voc re-escrever todo o seu cdigo."
Brian W. Kernighan e P.J. Plaugher
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
59/85
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
60/85
Cdigo limpoComentrios significam cdigo ruim
Uma das motivaes mais comuns para criarum comentrio um cdigo ruim.
Construmos um mdulo e sabemos que estconfuso e desorganizado.
Estamos cientes da baguna, ento dizemos:"Oh, melhor inserir um comentrio!"
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
61/85
Cdigo limpoComentrios significam cdigo ruim
No! melhor limpar seu cdigo.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
62/85
Cdigo limpoComentrios significam cdigo ruim
Cdigos claros e expressivos com poucos
comentrios so mais legveis que muitoscomentrios em um cdigo confuso.
Ao invs de explicar a baguna, melhorlimpar ela.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
63/85
Cdigo limpoExplique-se no cdigo
Certamente h vezes em que no possvel
se expressar direito no cdigo.
Infelizmente devido a isso, muitos
programadores assumem que o cdigoraramente um bom meio para se explicar.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
64/85
Cdigo limpoExplique-se no cdigo
// Verifica se o funcionario tem direito a todos os benefcios
if (funcionario.ativo & HORA_TOTAL > HORA_MINIMA) && (funcionario.idade > 65)
Qual voc gostaria de ver em um cdigo fonte?
if (funcionario.temDireitoATodosOsBeneficios())
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
65/85
Cdigo limpoComentrios bons
Comentrios sobre licena.
Comentrios de alerta.
Comentrios para documentao.
Necessidade de explicao de regra denegcio especfica.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
66/85
Cdigo limpoComentrios extremamente ruins
Poucas prticas so to condenveis quanto
colocar o cdigo como comentrio.
Um cdigo comentado nunca apagado, pois
outros programadores acham que o cdigo importantes demais para no serem apagados.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
67/85
Cdigo limpoComentrios extremamente ruins
Houve uma poca em que explicar o cdigoem comentrio poderia ser prtico.
Mais j faz anos que existem sistemas decontrole de verso/cdigo fonte, que
lembraram dos cdigos.
Eu prometo que no perder seu cdigo.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
68/85
Cdigo limpoFormatao
Aqui, existem trs regras essnciais:
1. As regras da linguagem de programao.
2. As regras do framework utilizado.
3. As regras do time de desenvolvimento.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
69/85
Cdigo limpoObjetos e estruturas de dados
H um motivo para declararmos nossas
variveis como privadas. No queremos queningum dependa delas.
Desejamos ter a liberdade para alterar o tipo
ou a implementao seja por capricho ouimpulso.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
70/85
Cdigo limpoA Lei de Demeter
Um mtodo F de uma classe C s deve
chamar os mtodos de:
1. C.2. Um objeto criado porF.
3. Um objeto passado como parmetro para F.4. Um objeto dentro de uma varivel de instncia de C.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
71/85
Cdigo limpoA Lei de Demeter
Um mtodo no deve chamar os mtodos em
objetos retornados por qualquer outra dasfunes permitidas.
Em outras palavras, fale apenas comconhecidos, no com estranhos.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
72/85
Cdigo limpoUse excees para tratar erros
Use excees ao invs de cdigos de erros.
Tratamento de exceo algo que um mtododeve fazer.
No use excees genricas.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
73/85
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
74/85
Cdigo limpoUse excees para tratar erros
if (deletaPagina(pagina) == E_OK) {if (registro.deletaReferencias(pagina.nome) == E_OK) {
if (configChaves.deletaChaves(pagina.id)) == E_OK) {logger.log("pagina deletada!");
} else {logger.log("configChaves no foi deletado!");
}} else {
logger.log("deletar referencias do registro falhou!");}
} else {logger.log("no foi possvel deletar a pagina"); return E_ERROR;
}
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
75/85
Cdigo limpoUse excees para tratar erros
public void removeCompletamenteUmaPagina() {try {
deletaPagina(pagina);registro.deletaReferencias(pagina.nome);configChaves.deletaChaves(pagina.id);
} catch (DeleteFailedException e) {
logger.log(e.getMessage());}
}
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
76/85
Cdigo limpoNo retorne null de mtodos
Obriga o uso de if.
Pode dispararNullPointerException.
Considere: Lanar excees ou retornar umobjeto de caso especial.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
77/85
Cdigo limpoNo retorne null de mtodos
List empregados = getEmpregados();
if (empregados != null) {for (Empregado empregado: empregados) {
pagamentoTotal += empregado.getSalario();}
}
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
78/85
Cdigo limpoNo retorne null de mtodos
List empregados = getEmpregados();for (Empregado empregado: empregados) {
pagamentoTotal += empregado.getSalario();}
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
79/85
Cdigo limpoUse excees para tratar erros
Use excees ao invs de cdigos de erros.
Tratamento de exceo algo que um mtododeve fazer.
No use excees genricas.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
80/85
Cdigo limpo
"Deixe a rea do acampamento mais limpa doque como voc a encontrou."
Boy Scouts of America
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
81/85
Cdigo limpoEquvocos da refatorao
Se no estiver quebrado, no conserte!
Refatorao no oferece benefcios a curtoprazo.
Refatorao s funciona para equipes agis.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
82/85
Cdigo limpoAplicao exemplo: Agenda APK
Aplicao nativa (Android).Desenvolvido em Java.
ORM.Padro de camadas.
Model-View-Controller.
Active Records.
Cdigo limpo
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
83/85
Cd go poAplicao exemplo: Agenda APK
Anlise rpida:
Maior classe: 80 linhas.Maior mtodo: 6 linhas.Nmero de if: 0.Nmero de for: 0.
Nmero de for-each: 1.
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
84/85
Cronograma
-
7/28/2019 Desenvolvimento profissional utilizando tcnicas de cdigo limpo
85/85
Referncias
Implementation Patterns, Kent Beck, Addison-
Wesley, 2007.
Clean Code, Robert C Martin, Alta Books,
2011.