O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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(ite...
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 t...
Variáveis
troque significados escondidos por constantes
for (Lanche lanche : lanches) {
if (lanche.getCodigo() == 2) {
lan...
Funções
nomes distinguíveis
carrinho = new CarrinhoDeCompras();
carrinho
.adicionar(
.acrescentar(
.add(
.incluir(
.append...
Funções
devem fazer apenas uma coisa
public void criarUsuario (String nome, int RG) {
Usuario user = new Usuario();
if (us...
Funções
não negue duas vezes
if (!naoDeveAdicionar()) {
if (deveAdicionar()) {
passe poucos parâmetros
seja claro com cabe...
Classes
são personagens
transformadores
Classes
nomes pronunciáveis
new PDVCliente();
new PDVProduto();
new Cliente();
new Produto();
escolha bons ótimos nomes
ne...
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 Dat...
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 e...
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!
Próximos SlideShares
Carregando em…5
×

Legibilidade do código

737 visualizações

Publicada em

  • Legal o conteúdo, Sr. Volpone! Eu só discordo um pouco do seguinte:

    Código: como e de que maneira
    Comentário: por qual razão

    Eu diria que a assinatura de um método deve dizer 'o que' e o corpo do método deve dizer 'como'. O 'por que', quando for difícil de tornar explícito só com o nome do método, deve ser facilmente dedutível do contexto.

    Esse, para mim, é o cenário ideal. Havendo alguma restrição séria, o comentário pode entrar em cena. Dois exemplos: código de bibliotecas (em que não temos como mexer) e código frágil demais (que não possa ser refatorado). Nesse caso, ele atua como quebra-galho.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Legibilidade do código

  1. 1. Legibilidade do Código @felipevolpone @dextrasistemas
  2. 2. Inspiração manutenção views.py – 8 mil linhas sem testes
  3. 3. 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 = []
  4. 4. Você escreve seu código para quem?
  5. 5. É fácil saber o que seu código faz? Quanto você se preocupa com a qualidade dele?
  6. 6. Você se preocupa com o futuro do projeto?
  7. 7. sem qualidade, perde-se agilidade
  8. 8. ... + Escalabilidade + Cobertura de testes + Código bem feito + Complexidade + Metodologia + ...
  9. 9. grandes mudanças com pequenas preocupações
  10. 10. 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;
  11. 11. 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();
  12. 12. Funções nomes distinguíveis carrinho = new CarrinhoDeCompras(); carrinho .adicionar( .acrescentar( .add( .incluir( .appendar(
  13. 13. 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); }
  14. 14. 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)
  15. 15. Classes são personagens transformadores
  16. 16. Classes nomes pronunciáveis new PDVCliente(); new PDVProduto(); new Cliente(); new Produto(); escolha bons ótimos nomes new ProdutoObjeto(); new Produto();
  17. 17. Comentários código: como e de que maneira comentário: por qual razão
  18. 18. 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
  19. 19. 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á.
  20. 20. Organização código como API
  21. 21. código fala conte uma história!
  22. 22. parece fácil, mas...
  23. 23. inspirar para mudar
  24. 24. felipevolpone@gmail.com @felipevolpone obrigado!

×