SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Legibilidade do Código
@felipevolpone
@dextrasistemas
Inspiração
manutenção
views.py – 8 mil linhas
sem testes
def automate_user_from_dict (self, dict):
aux = dict
for item in dict:
if (item[‘tipo’] == 2):
u = Usuario()
u.setName(item[‘nome’])
else:
if (!data.formatadaEhValida(item[‘data’])):
print ‘deu erro’
#try catch
pass
Log.clear()
#dict[‘auth’] = Authorize.isAuth(u)
#aux = []
Você escreve seu código para quem?
É fácil saber o que seu código faz?
Quanto você se preocupa com a qualidade
dele?
Você se preocupa com o
futuro do projeto?
sem qualidade, perde-se agilidade
... + Escalabilidade + Cobertura de
testes + Código bem feito +
Complexidade + Metodologia + ...
grandes mudanças
com
pequenas preocupações
dê bons nomes e seja objetivo
Variáveis
String nameString = “Maria”;
String nome = “Maria”;
String aux = “”;
não misture tipos com nomes
List<String> listaDeNomes;
List<String> list;
List<String> nomes;
Variáveis
troque significados escondidos por constantes
for (Lanche lanche : lanches) {
if (lanche.getCodigo() == 2) {
lanche.recebeDescontoDaSegundaFeira();
int LANCHE_PROMOCIONAL_SEGUNDA_FEIRA = 2;
if (lanche.getCodigo() == LANCHE_PROMOCIONAL_SEGUNDA_FEIRA) {
lanche.recebeDescontoDaSegundaFeira();
Funções
nomes distinguíveis
carrinho = new CarrinhoDeCompras();
carrinho
.adicionar(
.acrescentar(
.add(
.incluir(
.appendar(
Funções
devem fazer apenas uma coisa
public void criarUsuario (String nome, int RG) {
Usuario user = new Usuario();
if (user.getTipo() == ‘ADMIN’) {
repository.createNewAdmin(user);
}
user.setName(nome);
Contas allContas = repository.getAllContas().getDebitos();
user.debitarContas(allContas);
repository.saveUser(user);
}
Funções
não negue duas vezes
if (!naoDeveAdicionar()) {
if (deveAdicionar()) {
passe poucos parâmetros
seja claro com cabeçalhos
public void criarRelatorio (String titulo, String nomeUsuario, String
sobrenomeUsuario, int idade, int RG, ...)
public void criarRelatorioDoUsuario (String titulo, Usuario usuario)
Classes
são personagens
transformadores
Classes
nomes pronunciáveis
new PDVCliente();
new PDVProduto();
new Cliente();
new Produto();
escolha bons ótimos nomes
new ProdutoObjeto();
new Produto();
Comentários
código: como e de que maneira
comentário: por qual razão
Comentários
comentários deveriam dizer coisas que o código não
consegue dizer por si
//data esperada yyyy-mm-dd
public Date formataData (String dataNaoFormatada) {
não deixe código comentado
Organização
Um lugar para tudo, tudo em seu lugar. Um pedaço de código deve
estar onde você esperava encontrá-lo. Se não estiver, você deveria
refatorá-lo para tê-lo lá.
Organização
código como API
código fala
conte uma história!
parece fácil, mas...
inspirar para mudar
felipevolpone@gmail.com
@felipevolpone
obrigado!

Weitere ähnliche Inhalte

Ähnlich wie Legibilidade do código

UAI Test 2014 - Storyboards - dos Requisitos aos Testes
UAI Test 2014 - Storyboards - dos Requisitos aos TestesUAI Test 2014 - Storyboards - dos Requisitos aos Testes
UAI Test 2014 - Storyboards - dos Requisitos aos TestesJosé Correia
 
Transição - Orientação a objeto para Funcional
Transição - Orientação a objeto para FuncionalTransição - Orientação a objeto para Funcional
Transição - Orientação a objeto para FuncionalIsmael Velten
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Elaine Naomi
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Luciano Ramalho
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareGabriel Felipe Soares
 
Mackenzie - TypeScript
Mackenzie - TypeScript Mackenzie - TypeScript
Mackenzie - TypeScript MVP Microsoft
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Thiago Barradas
 
Escrevendo testes unitários para código legado: técnicas de isolamento
Escrevendo testes unitários para código legado: técnicas de isolamentoEscrevendo testes unitários para código legado: técnicas de isolamento
Escrevendo testes unitários para código legado: técnicas de isolamentoAndré Ricardo Barreto de Oliveira
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...Tchelinux
 

Ähnlich wie Legibilidade do código (20)

UAI Test 2014 - Storyboards - dos Requisitos aos Testes
UAI Test 2014 - Storyboards - dos Requisitos aos TestesUAI Test 2014 - Storyboards - dos Requisitos aos Testes
UAI Test 2014 - Storyboards - dos Requisitos aos Testes
 
Transição - Orientação a objeto para Funcional
Transição - Orientação a objeto para FuncionalTransição - Orientação a objeto para Funcional
Transição - Orientação a objeto para Funcional
 
Cs 2
Cs 2Cs 2
Cs 2
 
Tdc 2020 Floripa
Tdc 2020 FloripaTdc 2020 Floripa
Tdc 2020 Floripa
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?
 
Workshop Django
Workshop DjangoWorkshop Django
Workshop Django
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
Csharp.intro
Csharp.introCsharp.intro
Csharp.intro
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Sql injection
Sql injectionSql injection
Sql injection
 
Clean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de SoftwareClean code - Qualidade em desenvolvimento de Software
Clean code - Qualidade em desenvolvimento de Software
 
Mackenzie - TypeScript
Mackenzie - TypeScript Mackenzie - TypeScript
Mackenzie - TypeScript
 
Segurança Web: O MMA da Tecnologia
Segurança Web: O MMA da TecnologiaSegurança Web: O MMA da Tecnologia
Segurança Web: O MMA da Tecnologia
 
Clean Code
Clean CodeClean Code
Clean Code
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016
 
Escrevendo testes unitários para código legado: técnicas de isolamento
Escrevendo testes unitários para código legado: técnicas de isolamentoEscrevendo testes unitários para código legado: técnicas de isolamento
Escrevendo testes unitários para código legado: técnicas de isolamento
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
 

Legibilidade do código