Já falei de Python diversas vezes aqui no blog e meu interesse pela linguagem continua a crescer. Estou continuamente estudando, lendo livros, ouvindo podcasts e fazendo cursos.
Existe uma expressão para quando você escreve código utilizando facilidades, convenções, formatação e sintaxe típicas da linguagem: Abordagem Pythonica.
É um termo com uma escopo enorme, mas uma das coisas que gera mais discussão e rivalidade é como formatar o código corretamente.
O Python tem um guia de estilo oficial, definido na PEP8. Algumas grandes empresas também tem seu guia de estilo interno, como o Google por exemplo.
O problema de guias é que sempre existe um pouco de liberdade de interpretação, sempre dá pra adicionar uma regra ou outra no linter pra passar batido. E sempre vai dar pano pra manga discussão de qual a formatação correta para uma linha ou outra numa base de código.
Isso é uma das coisas que eu gosto muito no Go (golang): Existe uma formatação oficial. O binário gofmt automaticamente reformata o seu código e pronto. Não tem discussão. Todos os editores de texto e IDEs que suportam Go rodam gofmt automaticamente no seu código cada vez que você salva.
Eu queria alguma coisa assim pra Python, mas não sabia que já existia. Entra o Black.
Segundo a página do projeto o Black é um formatador cheio de opinião. Não é configurável, não dá pra fazer jogo de regrinhas.
O nome do projeto foi baseado numa frase famosa do Henry Ford:
Ou, em português: “Qualquer cliente pode ter o carro da cor que ele quiser desde que seja preto“.
Você roda o black no seu código e ele reformata do jeito que deve ser. Acabou. Não tem discussão de continuação de linha, espaço antes, depois, aspas simples, aspas duplas…
Pra mim isso é o ideal. Não quero pensar e não quero discutir formatação. Rodo o black e pronto.
Aliás, dá pra integrar o Black em diversos editores de texto. Pessoalmente virei um grande fã do Microsoft Visual Studio Code e aqui tem instruções de como habilitar o black para formatar o código cada vez que você salvar, no melhor estilo gofmt. 🙂
Só pra deixar claro que ainda rodo pylint ou flake8 também. O Black não substitui um linter, mas resolve totalmente a discussão de formatação.