SlideShare uma empresa Scribd logo
PEP 8
                 OU,
POR QUE UTILIZAR PADRÕES DE CÓDIGO?
AGENDA
Quem sou eu?
Motivação
PEP8
QUEM SOU EU?
Renato Oliveira
CIn-UFPE
PUG-PE
Linux User - #532503
Js e Rails developer na E.Life
MOTIVAÇÃO
“40% ~ 80% of the lifetime cost of a piece
   of software goes to maintenance”
“Hardly any software is mainteined for its
    hole life by the original author”
                   Sun
PROBLEMA
Desenvolvi um produto há 2 anos e o cliente voltou agora
     e pediu para adicionar mais alguns módulos

                     PERGUNTA
           Você tem orgulho do seu código?
           Está fácil fazer esta manutenção?
CODE SMELL
Não é um bug
Está mais para um sintoma do código que indica um
problema maior
Indica que o código é fraco de design e que pode
atrasar o desenvolvimento ou aumentar o risco de
bugs ou falhas no futuro
Um código que não segue padrões é mais suscetível a
'smells'
MANUTENÇÃO
 QUALIDADE
 REFATORAR
ENTÃO VAMOS FALAR DE COISA BOA NÉ?
      Você já conhece a nova top therm?
E POR QUE COM
PYTHON SERIA
  DIFERENTE?
PEP 8
Escrita por Guido Van Rossum e Barry Warsaw
THE ZEN OF PYTHON
      import this
THE ZEN OF PYTHON, BY TIM PETERS
             Beautiful is better than ugly.
            Explicit is better than implicit.
            Simple is better than complex.
         Complex is better than complicated.
              Flat is better than nested.
             Sparse is better than dense.
                 Readability counts.
Special cases aren't special enough to break the rules.
          Although practicality beats purity.
          Errors should never pass silently.
              Unless explicitly silenced.
THE ZEN OF PYTHON, BY TIM PETERS
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious
                      way to do it.
   Although that way may not be obvious at first unless
                     you're Dutch.
                Now is better than never.
     Although never is often better than *right* now.
 If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good
                           idea.
 Namespaces are one honking great idea -- let's do more
                        of those!
Pep 8
FORMATAÇÃO DE CÓDIGO
   Identação
   Tabs ou espaços
   Comprimento da linha
   Linhas em branco
   imports
ERRADO
ipr o,ss
 mot s y




                   CERTO
ipr o
 mot s
ipr ss
 mot y




                  CERTO[2]
fo o ipr pt,mdr
 rm s mot ah ki
ERRADO
pitsm(fb 5) fb 1 ))
 rn oa i(  , i( 0




                      CERTO
pitsm(i() fb1)
 rn oafb5, i(0)
OPERADORES
           ERRADO
x1
 =0
ay1
 =<0




           CERTO
x=10
a=y<10
OPERADORES
                ERRADO
sm( =1,y=2)
 oax 0    0




                CERTO
sm(=0 y2)
 oax1, =0
ATRIBUTOS
AGM_OSAT =2
 LUACNTNE  0
agm_aivl="luasrn"
 luavrae  agm tig
_tiuod_s_nen ="ur srn"
 arbt_euoitro  ota tig


casNmeelse
 ls odDCas:
     _arbt_rvd_ecas =Tu
      _tiuopiaod_lse re

    dfagm_uco)
     e luafna(:
         #cdg d ba
           óio e o

    dfOtauco)
     e urFna(:
         #cdg tnoau
           óio es qi
RECOMENDAÇÕES
i xi Nn:
 f  s oe
     ..
      .

i z
 f :
       ..
        .



i tp(b)i tp()
 f yeoj s ye1:
     #erd
       rao

i iisac(b,it:
 f sntneoj n)
     #cro
       et
RECOMENDAÇÕES
i fo:]= 'a'
 f o[3 = br:
     #erd
       rao

i frsatwt(br)
 f o.trsih'a':
     #cro
       et
MAIS EM
http://www.python.org/dev/peps/pep-0008/
DÚVIDAS?
OBRIGADO
    @_renatoOliveira
 renato@labcodes.com.br
github.com/renatooliveira
Pep 8

Mais conteúdo relacionado

PDF
Tdd not sure if testing or developing
PDF
Automatizando testes em 4 passos
PDF
Test Driven Development - Em busca de feedback util e concreto
PPT
Tdd direto das trincheiras
PDF
TDD - Workshop Pyladies SP
PDF
Administradores e suas gambiarras
PDF
TDD Direto das Trincheiras versao 2
PPTX
TDD: Técnicas, Benefícios e Limitação
Tdd not sure if testing or developing
Automatizando testes em 4 passos
Test Driven Development - Em busca de feedback util e concreto
Tdd direto das trincheiras
TDD - Workshop Pyladies SP
Administradores e suas gambiarras
TDD Direto das Trincheiras versao 2
TDD: Técnicas, Benefícios e Limitação

Mais procurados (20)

PDF
TDD para "meros mortais"
PDF
Lições aprendidas sobre transações em microsserviços
PPTX
Desmistificando Design Patterns
ODP
Lapidando ruby
PPT
TDD direto das trincheiras
PDF
Code smell gsw
PDF
Do código à produção com Gitlab (mundo python)
PDF
Coding Dojo
PPTX
Clean Code: Por um mundo com códigos melhores - SETI 2017
PDF
Multidisciplinaridade - Desconstruindo especialistas e construindo times
PDF
Coding Dojo - Funcionamento
PDF
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
PPT
Seja Um Programador Pragmatico
PPTX
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
PDF
Código limpo php
PDF
Programação Orientada a Gambiarra
PDF
POG nunca mais - SOLISC
PDF
TDD com Clean Code: Chega de amadorismo!
PPT
Coding dojo
PDF
TDD - Pós Graduação em Engenharia de Software Ágil
TDD para "meros mortais"
Lições aprendidas sobre transações em microsserviços
Desmistificando Design Patterns
Lapidando ruby
TDD direto das trincheiras
Code smell gsw
Do código à produção com Gitlab (mundo python)
Coding Dojo
Clean Code: Por um mundo com códigos melhores - SETI 2017
Multidisciplinaridade - Desconstruindo especialistas e construindo times
Coding Dojo - Funcionamento
Direto das Trincheiras: Boas e más práticas de aplicações Ruby em ambientes c...
Seja Um Programador Pragmatico
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Código limpo php
Programação Orientada a Gambiarra
POG nunca mais - SOLISC
TDD com Clean Code: Chega de amadorismo!
Coding dojo
TDD - Pós Graduação em Engenharia de Software Ágil
Anúncio

Destaque (20)

PDF
NoSQL com Cassandra e Python
PDF
Porque foi bom aprender com Python
PDF
Clustering com numpy e cython
ODP
REST APIs com Django
PPT
Blender Com Python
PDF
Rain Toolbox - Previsão de Chuvas
PDF
Wikilytics
PDF
Criando comunidades bem sucedidas
PDF
Peça seu código em casamento: Votos, Tópicos e TDD
PPT
PPT
Pyjamas: Uma Ferramenta Pythônica para Web
PDF
Python na formacao_de_jovens
PDF
Palestra sobre Collections com Python
PDF
Migrando do App Engine para o Heroku
PDF
Computação Científica com Python
PDF
Python Debugger - PUG-PE
PDF
Python e Cadeias de Markov GHMM
PPTX
Palestra sobre Inteligência Coletiva
PDF
Qml + Python
PDF
Coding Dojo e Test Driven Development
NoSQL com Cassandra e Python
Porque foi bom aprender com Python
Clustering com numpy e cython
REST APIs com Django
Blender Com Python
Rain Toolbox - Previsão de Chuvas
Wikilytics
Criando comunidades bem sucedidas
Peça seu código em casamento: Votos, Tópicos e TDD
Pyjamas: Uma Ferramenta Pythônica para Web
Python na formacao_de_jovens
Palestra sobre Collections com Python
Migrando do App Engine para o Heroku
Computação Científica com Python
Python Debugger - PUG-PE
Python e Cadeias de Markov GHMM
Palestra sobre Inteligência Coletiva
Qml + Python
Coding Dojo e Test Driven Development
Anúncio

Semelhante a Pep 8 (20)

PDF
Minicurso: Python em 4 horas - FATEC SCS 2015
KEY
Clean code
ODP
Mini Curso de Python para Coding Dojo
PDF
Expressões idiomáticas do python
ODP
Pymordida0 Semana de computação da SOCIESC - 2008/10
KEY
Introdução ao Python & Web Services
PDF
Refactoring: Comece agora! (ou como não perder o sono ao olhar o código amanha)
PDF
Minicurso Python
PDF
Python: a primeira mordida
PDF
Dojo de Python
PDF
Iniciando em Python
PDF
Python: a primeira mordida
PDF
Py sintaxe
PPT
Introdução ao Python
PDF
Python
PDF
Automacao com Python.pdf
ODP
Python Emsl2009
PDF
Slide_Python.pdf
PDF
Aprenda computação com python 3.0 (1)
PDF
Removendo o cheiro ruim do seu código - SoLiSC 2011
Minicurso: Python em 4 horas - FATEC SCS 2015
Clean code
Mini Curso de Python para Coding Dojo
Expressões idiomáticas do python
Pymordida0 Semana de computação da SOCIESC - 2008/10
Introdução ao Python & Web Services
Refactoring: Comece agora! (ou como não perder o sono ao olhar o código amanha)
Minicurso Python
Python: a primeira mordida
Dojo de Python
Iniciando em Python
Python: a primeira mordida
Py sintaxe
Introdução ao Python
Python
Automacao com Python.pdf
Python Emsl2009
Slide_Python.pdf
Aprenda computação com python 3.0 (1)
Removendo o cheiro ruim do seu código - SoLiSC 2011

Último (8)

PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Mecânico de Manutenção de Equipamentos.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Arquitetura de computadores - Memórias Secundárias
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia

Pep 8

  • 1. PEP 8 OU, POR QUE UTILIZAR PADRÕES DE CÓDIGO?
  • 3. QUEM SOU EU? Renato Oliveira CIn-UFPE PUG-PE Linux User - #532503 Js e Rails developer na E.Life
  • 4. MOTIVAÇÃO “40% ~ 80% of the lifetime cost of a piece of software goes to maintenance” “Hardly any software is mainteined for its hole life by the original author” Sun
  • 5. PROBLEMA Desenvolvi um produto há 2 anos e o cliente voltou agora e pediu para adicionar mais alguns módulos PERGUNTA Você tem orgulho do seu código? Está fácil fazer esta manutenção?
  • 6. CODE SMELL Não é um bug Está mais para um sintoma do código que indica um problema maior Indica que o código é fraco de design e que pode atrasar o desenvolvimento ou aumentar o risco de bugs ou falhas no futuro Um código que não segue padrões é mais suscetível a 'smells'
  • 8. ENTÃO VAMOS FALAR DE COISA BOA NÉ? Você já conhece a nova top therm?
  • 9. E POR QUE COM PYTHON SERIA DIFERENTE?
  • 10. PEP 8 Escrita por Guido Van Rossum e Barry Warsaw
  • 11. THE ZEN OF PYTHON import this
  • 12. THE ZEN OF PYTHON, BY TIM PETERS Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced.
  • 13. THE ZEN OF PYTHON, BY TIM PETERS In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
  • 15. FORMATAÇÃO DE CÓDIGO Identação Tabs ou espaços Comprimento da linha Linhas em branco imports
  • 16. ERRADO ipr o,ss mot s y CERTO ipr o mot s ipr ss mot y CERTO[2] fo o ipr pt,mdr rm s mot ah ki
  • 17. ERRADO pitsm(fb 5) fb 1 )) rn oa i( , i( 0 CERTO pitsm(i() fb1) rn oafb5, i(0)
  • 18. OPERADORES ERRADO x1 =0 ay1 =<0 CERTO x=10 a=y<10
  • 19. OPERADORES ERRADO sm( =1,y=2) oax 0 0 CERTO sm(=0 y2) oax1, =0
  • 20. ATRIBUTOS AGM_OSAT =2 LUACNTNE 0 agm_aivl="luasrn" luavrae agm tig _tiuod_s_nen ="ur srn" arbt_euoitro ota tig casNmeelse ls odDCas: _arbt_rvd_ecas =Tu _tiuopiaod_lse re dfagm_uco) e luafna(: #cdg d ba óio e o dfOtauco) e urFna(: #cdg tnoau óio es qi
  • 21. RECOMENDAÇÕES i xi Nn: f s oe .. . i z f : .. . i tp(b)i tp() f yeoj s ye1: #erd rao i iisac(b,it: f sntneoj n) #cro et
  • 22. RECOMENDAÇÕES i fo:]= 'a' f o[3 = br: #erd rao i frsatwt(br) f o.trsih'a': #cro et
  • 25. OBRIGADO @_renatoOliveira renato@labcodes.com.br github.com/renatooliveira