24
Legibilidade do Código @felipevolpone @dextrasistemas

Legibilidade do código

Embed Size (px)

Citation preview

Page 1: Legibilidade do código

Legibilidade do Código

@felipevolpone

@dextrasistemas

Page 2: Legibilidade do código

Inspiração

manutenção

views.py – 8 mil linhas

sem testes

Page 3: Legibilidade do código

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 = []

Page 4: Legibilidade do código

Você escreve seu código para quem?

Page 5: Legibilidade do código

É fácil saber o que seu código faz?

Quanto você se preocupa com a qualidade dele?

Page 6: Legibilidade do código

Você se preocupa com ofuturo do projeto?

Page 7: Legibilidade do código

sem qualidade, perde-se agilidade

Page 8: Legibilidade do código

... + Escalabilidade + Cobertura de testes + Código bem feito +

Complexidade + Metodologia + ...

Page 9: Legibilidade do código

grandes mudanças

com

pequenas preocupações

Page 10: Legibilidade do código

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;

Page 11: Legibilidade do código

Variáveistroque 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();

Page 12: Legibilidade do código

Funções

nomes distinguíveis

carrinho = new CarrinhoDeCompras();

carrinho

.adicionar(

.acrescentar(

.add(

.incluir(

.appendar(

Page 13: Legibilidade do código

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);}

Page 14: Legibilidade do código

Funçõesnã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)

Page 15: Legibilidade do código

Classes

são personagens transformadores

Page 16: Legibilidade do código

Classes

nomes pronunciáveis

new PDVCliente();

new PDVProduto();

new Cliente();

new Produto();

escolha bons ótimos nomes

new ProdutoObjeto();

new Produto();

Page 17: Legibilidade do código

Comentários

código: como e de que maneira

comentário: por qual razão

Page 18: Legibilidade do código

Comentários

comentários deveriam dizer coisas que o código não consegue dizer por si //data esperada yyyy-mm-ddpublic Date formataData (String dataNaoFormatada) {

não deixe código comentado

Page 19: Legibilidade do código

Organização

Um lugar para tudo, tudo em seu lugar. Um pedaço de código deveestar onde você esperava encontrá-lo. Se não estiver, você deveria

refatorá-lo para tê-lo lá.

Page 20: Legibilidade do código

Organização

código como API

Page 21: Legibilidade do código

código falaconte uma história!

Page 22: Legibilidade do código

parece fácil, mas...

Page 23: Legibilidade do código

inspirar para mudar

Page 24: Legibilidade do código

[email protected]

@felipevolpone

obrigado!