Fechar

Codifique como um verdadeiro Pythonista

Por | 20 de junho de 2009 | Desenvolvimento 4 comentários

324180_numbers_and_letters_my_mac_put“Convenções de código” são uma faca de dois gumes… O lado bom é que você tem um código “padronizado”, limpo, legível e que poderá integrar com ferramentas externas para gerar documentação, versionamento, análise de qualidade, etc. O lado ruim é que é uma verdadeira “decoreba”… “mais trabalho” que irá exigir um guia de referências rápidas ao lado.

Em Python, uma linguagem que te obriga a indentar código, as convenções de código são objetivas e diretas. Já enfatizei no post “Pense como um Pythonista” que não programa-se em Python como em outras linguagens… o mesmo vale para as suas convenções.

Como não tenho o objetivo de reproduzir na íntegra as convenções de código do Python (pretendo somente salientar de forma direta os principais artefatos), caso você queira se aprofundar mais, leia na íntegra o “style guide for Python code” direto da documentação oficial do Python.

Espaçamentos:

  • 4 espaços para indentações (somente espaços, sem tabulações)
  • 1 linha em branco entre funções
  • 2 linhas em branco entre classes
  • adicione 1 espaço em branco depois de ‘,’ (vírgulas) em listas, tuplas, argumentos de métodos/funções e dicionários, e depois de ‘:’ (dois pontos). Mas nunca antes
  • Use espaços em atribuições e comparações, exceto na lista de argumentos de métodos/funções
  • Em parênteses, listas de argumentos e Docstring, não use espaços após a abertura e antes do final do bloco (ex.: (1, 2, 3) e não ( 1, 2, 3 ))

Nomes:

  • desse_modo para funções, métodos e atributos
  • desse_modo ou DESSE_MODO para constantes (particularmente, recomendo a segunda opção)
  • DesseModo para classes
  • desseModo só em casos extremamente necessários (alguns módulos mais antigos, por exemplo)
  • Atributos: interface, _internal, __private (evite usar a última forma, lembre-se: Não é que se faz em Java que deve-se fazer em Python!)

Linhas longas, continuações (atenção a isso, Python funciona por indentações… lembra?!):

  • Escreva em no máximo 80 colunas por linha
  • Quebre blocos dentro de parênteses em linhas
  • Se o caso acima não se aplica, utilize ‘\’ (barra)

Strings longas:

  • Você pode quebrar uma string grande em pequenas strings, utilizando parênteses para concatená-las
  • Utilize ”’ (três apóstrofos ou aspas dulpas) para criar strings de múltiplas linhas

Composição:

  • Embora Python possa resolver alguns problemas em 1 linha de código, evite isso!

Comentários:

  • Use Docstrings para dizer como usar o código
  • Use Comentários para dizer como o código funciona
  • Para bugs utilize: # !!! BUG: Isto e um bug
  • Para reparos utilize: # !!! FIX: Conserte-me
  • Para dúvidas utilize: # ??? Qual e a funcao disso?

Docstrings:

Confira o PEP 257 para mais informações.

  • Uma linha: “”"Este é um comentário em docstring.”"”
  • Múltiplas linhas:

“”"Este é o ‘título’ do meu docstring.

Aqui eu descrevo como usar o recurso, talvez falando sobre os parâmetros a serem passados.

Note que antes de fechar o docstring é deixada uma linha em branco. Pura convenção, claro.

“”"

Quando “em 1 linha” é vantagem:

  • nome, idade = ‘joão’, 33
  • Criando listas em 1 linha apenas: lista = [i for i in range(0, 100)]

Python é inteligente, aproveite:

  • Testando se ‘joão’ existe na lista de trabalhadores: ‘joão’ in trabalhadores
  • Pegando um valor de um dicionário, e retornando “False” caso não exista: trabalhadores.get(‘joão’, False)
  • Se ‘joão’ não existir no dicionário, crie-o com o valor “True”, senão não faça nada: trabalhadores.setdefault(‘joão’, True)
  • Para testar valores verdadeiro use if x: ao invés de if x == True:
  • Use % em strings: “Olá %s” % (“Mundo”)g

Tradução na Íntegra

O PythonBrasil fez uma tradução do Guia de Estilos do Python que pode ser conferida aqui.

Considerações Finaisprogramador

Seguir boas práticas de desenvolvimento é necessário para evitar futuras dores de cabeça. Conheço as convenções do PHP e do Java e te digo que tomei um susto e tanto no começo, principalmente se tratando de desenvolver componentes em PHP para o Joomla!.

Escolha bem o método com o qual você desenvolverá seus softwares. Sei muito bem que quase sempre a produtividade vem antes que a qualidade… mas qualidade de software nunca é demais! E com certeza se você trabalha em equipe, vai beneficiar e muito a produtividade.

Até a próxima…

Marcadores: , , ,

Outros conteúdos interessantes

Confira os 4 comentários deixados Comentar

  1. Jackson via Rec6
    10:20 em 20 de junho de 2009
    1

    Codifique como um verdadeiro Pythonista | Profissionais TI…

    “Convenções de código” são uma faca de dois gumes… O lado bom é que você tem um código “padronizado”, limpo, legível e que poderá integrar com ferramentas externas para gerar documentação, versionamento, análise de qualidade, etc….

  2. Python – Codifique como um verdadeiro pythonista!! « Fred Chevitarese …
    11:39 em 15 de julho de 2009
    2
  3. Primeiros passos no desenvolvimento com o web2py – Tutorial parte 1 | Profissionais TI – Pra quem respira informação
    13:43 em 14 de junho de 2010
    3

    [...] Python – se você não conhece muito a respeito de endentação, indico a leitura do post Codifique como um verdadeiro pythonista e do [...]

  4. Motive-se: Por que usar Python e Django? | Klaus Laube
    12:41 em 22 de dezembro de 2010
    4

    [...] Codifique como um verdadeiro Pythonista [...]


Deixe seu comentário!