segunda-feira, 12 de janeiro de 2009

Entendendo e aplicando PEP 8 - Parte 1

Mas o que seria PEP 8?

Bom, PEP é uma sigla para Python Enhancement Proposals o que poderíamos definir como uma proposta de aprimoramento da linguagem Python como um todo, ou seja, tudo aquilo que está ligado ao Python;
  • novas funcionalidades
  • processos
  • ambiente
  • core
  • e outros
O PEP se resume em um documento totalmente técnico que pretende ajudar os desenvolvedores a entenderem uma idéia proposta, criando assim uma política de especificações da linguagem Python.
Existem inúmeros PEPs, todos eles com seus devidos índices e autores que especificam a intenção do PEP.

Neste post vou falar especificamente do PEP 8, que vem a ser um guia para o estilo de layout dos códigos escritos em Python, foi proposto por Guido van Rossum e Barry Warsaw.
Para uma leitura mais detalhada você pode lê-lo em http://www.python.org/dev/peps/pep-0008/.

Todo o conteúdo é baseado na especificação original do PEP 8, mas neste post a minha intenção é criar exemplos detalhados a cada abordagem deste PEP e também explicar cada caso isoladamente, montando uma série de regras que podem ser facilmente retidas pelo leitor.
Muitos desenvolvedores dizem que as regras estabelecidas pelo PEP 8 são seguidas apenas para os códigos que estão no core do Python e módulos externos importantes. Mas não acho que seja bem assim, é muito importante que o desenvolvedor que esteja começando a escrever códigos em Python siga estas regras desde cedo.
Toda linguagem de programação respeitada tem uma padronização de layout do código, afinal essa é uma das boas práticas de programação mais importantes para um desenvolvedor, principalmente para desenvolvedores que ajudam no software livre.

"O meu código é o seu código."

O código de um desenvolvedor que ajuda a comunidade Software Livre sempre vai pertencer a milhares de outros desenvolvedores, nunca o código vai ficar retido à um programador, por isso que é muito importante que as regras se tornem um hábito.
A padronização do layout de código facilita a legiblidade, manutenabilidade e até mesmo a produtividade, porque essas regras seguem a mesma via do fluxo de documentação. Então você acaba gerando um código mais expansível aos olhos da comunidade.

1 - Code Layout

1.1 - Indentação

Sempre use 4 espaços por nível de indentação.

Dicas:
  • nunca misture tabs com espaços. É bom você se adaptar com a indentação de 4 espaços, habituando-se com esse padrão você ganha produtividade e legibilidade. A indentação com 4 espaços evita várias dores de cabeça com editores de texto e ajuda no ciclo de manutenabilidade do código.

Fig 1.1.1

Fig 1.1.2


1.2 - Tamanho máximo das linhas

Sempre limite as linhas à um máximo de 79 caracteres.
Para blocos longos de texto (docstrings ou comentários), limite o tamanho para 72 caracteres.

Dicas:
  • a melhor maneira de quebrar uma linha de instrução é atribuindo um par de parênteses "()" ao redor de uma expressão ou usando uma barra invertida "\" para indicar a quebra de linha.
  • quando há uma quebra de linha em uma instrução a continuação da linha deve ser indentada com a linha mais acima.
  • o melhor lugar para quebrar uma linha ao redor de um operador binário é após ele, e nunca antes dele.
  • a estética de quebra de linha fica a critério do desenvolvedor, mas claro, seguindo as regras citadas acima.












Fig 1.2.1




1.3 - Linhas em Branco


Sempre separe o topo de funções e definições de classes com duas linhas em branco.
As definições de métodos dentro de uma classe são separadas por apenas uma linha em branco.

Dicas:
  • linhas em brancos podem ser usadas para separar grupos de funções relacionadas.
  • o uso de linhas em branco deve ser regrado para que o código não fique muito extenso, causando um cansaço e uma demora na leitura do código.
  • as vezes para que um código não fique muito extenso a melhor maneira é reformular a modelagem do código em si para que seja possível a separação em mais de um arquivo.
  • é sempre bom usar linhas em branco nas funções e métodos para separar seções lógicas.

1.4 - Encodificação

Para evitar problemas use sempre utf-8.


Em breve estarei postando a segunda parte do artigo.
Até mais!!!

Agradecimentos:

James Italiano - recorte das imagens

Nenhum comentário: