Legibilidade do código

Preview:

Citation preview

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

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çõ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)

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-ddpublic 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 deveestar 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 falaconte uma história!

parece fácil, mas...

inspirar para mudar

felipevolpone@gmail.com

@felipevolpone

obrigado!

Recommended