O nome das minhas variáveis deve ser em inglês ou português?

Um amigo meu costumava me encher o saco porque quando programo, dou o nome de todas as minhas variáveis e funções em inglês.

Sempre disse que fazia isso porque acho que a consistência é  extremamente importante pra legibilidade do código à medida que um  programa cresce, e mantenho minha opinião. Ele recentemente me mostrou  um projeto da autoria dele no GitHub, e então pude revidar zombando dele  por ter nomes de variáveis em inglês, em português e (!) metade em  inglês e metade em português.

“Oras, mas pra manter consistência, dá pra convencionar deixar todas  as variáveis definidas pelo programador em português e ficar com isso”,  alguém pode dizer. Esse approach resulta em alguns problemas:

  • Não vai haver consistência completa porque os nomes das funções e  variáveis da linguagem (built-ins) vão estar em inglês. Alguém que lê o  código e não é tão familiar com a linguagem pode não perceber essa  convenção e se confundir.
  • Usamos muitas palavras da língua inglesa pra nos expressar. Se chamamos uma função de fazer_login(), já estamos misturando inglês com português.
  • Frequentemente temos que dar nomes que se relacionam a algum built-in. Chamamos a lista de livros de tipolist de livros_list? lista_livros? list_livros? E se tivermos um deque (double-ended queue)? Vamos chamar a variável de fila_de_dois_lados_livros? Se convencionarmos usar o inglês, não só não haverá dúvidas sobre a palavra, mas também sobre a ordem das palavras.

E por que essa consistência é importante?

Vejo dois principais motivos práticos, além da boa aparência do código.

O primeiro é que à medida que um programa cresce e você não tem mais  todas as variáveis na ponta da língua, vai te tomar certo tempo se a  cada vez que for digitar uma variável menos comum você tiver que  procurar a definição pra saber qual é exatamente o nome dela (seria book_list? lista_livros? list_livros? livros_list? lista_books??).  Esse problema é de certa forma amenizado pelo auto-complete comum em  editores de texto e IDEs, mas volta ainda mais forte se você usa por  exemplo um dicionário com indexação por literal de string (livros['lista'], livros['count?']).

O segundo é que fica mais fácil pra outras pessoas que queiram  contribuir com o código. Não só pelo problema mencionado acima, já que  elas têm menos ideia ainda sobre o nome das suas variáveis, mas também  porque é mais fácil dizer “tudo em inglês” do que “tudo em português  menos os built-ins e login, mas sign-up é cadastrar-se”. Isso vale  também pra quando se pede ajuda com o código; se você vai num Stack  Overflow, por exemplo, vai ser muito mais fácil pra alguém que quer te  ajudar entender o que você quer fazer se ele conseguir entender o nome  das variáveis. No escopo de um projeto aberto, você praticamente elimina  a possibilidade de 90% do mundo tentar entender seu código no GitHub,  mesmo que gostem da proposta, porque não vão gastar a energia necessária  pra aprender português pra poder contribuir.

E se eu quiser meu programa em português?

Simples, faça seu programa em português. O nome das suas variáveis e funções não aparece pro usuário.  Não há nada errado em fazer uma interface em português. O que não deve  acontecer é a interface se misturar com o código. Considere o exemplo a  seguir:

Note que o que o usuário do programa vai ver está em português, mas  só isso. O nome das variáveis ainda está em inglês, então você  certamente não vai se confundir quando for programar, e a linguagem da  interface não faz diferença.

Show Comments

Get the latest posts delivered right to your inbox.