Introdução à programação e aos algoritmos
9.2 Preocupe-Se com Seu Leitor
O processo de desenvolver software não é um rio que segue sempre em uma direção. Não tenha medo de voltar atrás se achar que pegou um caminho errado.
Por isso tudo, a dica mais importante é: sempre pense antes de programar e avance quando tiver uma solução razoável.
9.2 PREOCUPE-SE COM SEU LEITOR
“Sempre programe como se o cara que vai fazer a manutenção do seu código fosse um violento psicopata que sabe onde você mora.” Martin Golding
Um programa bem escrito é muito mais fácil de ler do que um que seja desorganizado. Um programa será lido diversas vezes, por isso, esforce-se para escrever um código simples, um código que o seu futuro leitor não tenha dificuldade de entender.
O melhor critério para saber se um programa é bom ou não é sua legibilidade. Existe beleza na simplicidade. Um código confuso, mesmo que resolva bem um problema, provavelmente terá uma manutenção difícil. Alguém terá de reescrevê-lo. Tenha pena de seus futuros leitores. Reserve um tempo para pensar em como fazer seu código mais simples.
Procure desenvolver um estilo de programação. O que é um estilo? É a forma de escrever programas, nomear suas variáveis, indentar seu código. Se você trabalhar em uma empresa, procure saber quais são as diretrizes para escrita de programas.
Escolha nomes significativos para as entidades de seu programa. Mantenha coerência na escolha de nomes. Vai usar snake\_case? Então use este tipo de nome por todo o seu programa. Se você mudar o estilo que nomeia suas variáveis, seu programa perderá coerência. Se você está trabalhando em um programa em equipe, crie um estilo para todos seguirem.
Existem programas que permitem formatar um código escrito em
Python de acordo com regras uniformes. Use esses programas; assim você não precisa ficar sempre lembrando que regra está seguindo.
Regras simples de escrita melhoram e muito a legibilidade dos
programas. Python possui alguns programas que ajudam você a escrever um código mais legível. O primeiro é o pylint. Este programa vasculha o seu programa e o analisa de acordo com as regras básicas da boa formatação. Nem sempre vale a pena seguir seus conselhos, mas na maior parte das vezes ajuda muito ao menos tentar entender o que o pylint está reclamando do seu código.
Para instalar esse programa em Python, você pode usar o
comando pip ou pip3, dependendo de sua instalação. De agora em diante usarei apenas pip3, para simplificar. O comando para a instalação de qualquer programa dentro de Python é dado em um terminal:
pip3 install programa_a_ser_instalado
Para instalar o pylint, simplesmente digite em um terminal:
pip3 install pylint
Outro programa de checagem de formatação é o pep8, que
segue as recomendações de Python para formato de código. A instalação é semelhante:
pip3 install pep8
A execução de pylint sobre o programa de ordenação por bolha
fornece:
************* Module bubblesort
C: 1, 0: Missing module docstring (missing-
docstring)
C: 1, 0: Constant name “lst” doesn’t conform to UPP ER_CASE naming
style (invalid-name)
C: 5, 0: Constant name “n” doesn’t conform to UPPER _CASE naming
style (invalid-name)
------------------------------------------------------------------
Your code has been rated at 7.27/10 (previous run: 3 .64/10, +3.64)
Neste caso, ele considera que uma variável global deveria ser uma constante e reclama porque não está escrita com letras maiúsculas e que faltou a docstring. Identifica também outros problemas de estilo. Se você quiser mudar as regras, pode modificar um arquivo de configuração.
Ainda temos programas que podem formatar seu código diretamente. Você pode instalar o yapf (Yet Another Python Formatter) com o comando (pode ser pip em vez de pip3, dependendo de sua instalação):
pip3 install yapf
Por exemplo, digamos que você receba um programa digitado por um programador relapso que não se preocupou em nenhum momento em formatar corretamente o código (Programa 9.1):
x={ ‘a’:42,’b’:2,’c’:4242}
msg=’Bom’+ ‘dia’
def foo( var):
for i in range(1,20,3):
pass
def bar( var = 42):
return 3*var/42
def f( a ):
return 42*2
■ Programa 9.1: Programa mal formatado.