O que significa foo ou bar no nome de variáveis?

Figura1_programatorVocê já se deparou com um trecho de código fonte onde variáveis possuem nomes como foo ou bar? Neste post vou explicar o que significam estes nomes e porque é importante saber disso.

Quando estamos aprendendo a programar em uma linguagem de programação ou mesmo quando analisamos um trecho de código de exemplo (ou um code snippet) é muito comum encontrar variáveis com o nome de foo, bar, foobar ou alguma variação destes termos. Também é relativamente frequente o uso destes nomes em arquivos, tabelas, campos, atributos e outros elementos em modelos, scripts, arquivos de configuração e templates quando vemos exemplos didáticos de conceitos que acabamos de aprender.

Figura2_buteco1

Estes nomes são semelhantes a substantivos genéricos como fulano, ciclano e beltrano usados no dia a dia para se referir a uma pessoa qualquer. Da mesma maneira que a variável x é utilizada com frequência em problemas matemáticos para designar uma incógnita ou o nome i é comum para a variável contadora do tipo inteiro em loops for(), foo, bar ou foobar representam algo genérico. Do ponto de vista de dicionário, a palavra bar, em participar, significa isso mesmo: um bar, boteco, pé-sujo ou estabelecimento para se tomar algo e conversar. Já foo não possui um significado específico.

Figura3_snafu

Também é possível dizer que foobar é um neologismo. Quando ouço esta palavra lembro do exemplo marcante de neologismo apresentado no filme Resgate do Soldado Ryan: o uso da sigla SNAFU (Situation Normal: All Fucked Up) que é repetido várias vezes pelos protagonistas na versão com o áudio original. Se me recordo corretamente, a versão dublada utilizou o termo TUFO – Tudo F*dido).

Mas por que é importante saber disso enquanto se está programando? Bem, saber que foo e bar são neologismos em si não é muito relevante, mas o fato que alguém ficou curioso e resolveu procurar saber o motivo pela qual isso é utilizado diz algo sobre o desenvolvedor. Do ponto de vista histórico este link comenta um pouco sobre o significado e a origem dos termos foo, bar e foobar na programação incluindo seu uso inicial em meados dos anos 1960.

Figura4_replace_fear_of_the_unknown_with_curiosity

Procurar saber o significado e história de uso dos termos foo e bar mostra que o desenvolvedor é curioso e que ele não aceita simplesmente um exemplo do jeito que ele está. E isso é muito importante, pois um programador DEVE ser curioso e não simplesmente aceitar uma receita de bolo que deve ser seguida passo a passo do jeito que ela é. Em outras palavras, o que quero dizer é que em termos de programação deve-se sempre questionar o que está sendo apresentado mesmo em exemplos simples.

Durante a minha carreira já encontrei muitas pessoas que estão mais preocupadas em saber apenas o mínimo e seguir regras e receitas de bolos prontas. Isto é OK e há um grande mercado para quem pensa e age desta forma. Contudo, muitas vezes é preciso exercitar a curiosidade, questionar o que já está feito, mostrar criatividade e deixar a imaginação rolar solta para resolver problemas difíceis.

Isso me lembra de uma história sobre perfis de DBAs que ouvi há um tempo atrás. Basicamente me apresentaram uma analogia entre um DBA que administra um banco de dados e um piloto de avião: você (o passageiro do avião) não quer que o piloto seja muito criativo e faça coisas diferentes. Espera-se que ele siga os procedimentos, normas e fuja o mínimo do “script” que é conduzir um voo com segurança e tranquilidade.  De fato, este é um tipo de atividade que requer muito mais controle para manter as coisas como estão do que atitudes criativas para resolver problemas ou “pensar fora da caixa”.

Por outro lado, em ambientes muito dinâmicos é preciso contar com uma boa dose de criatividade, imaginação e “jogo de cintura” para lidar com situações cada vez mais complexas e inesperadas. Por exemplo: sistemas e bancos de dados que lidam com aspectos de leis tributárias da área de seguros que praticamente tem que atender novos requisitos constantemente quando novas resoluções, decretos ou adendos às regras são lançados, o que acontece frequentemente.

Para finalizar, acredito que da mesma maneira que existem chefs de cozinha que prosperam apenas seguindo menus tradicionais e pré-estabelecidos também existem chefs que conseguem obter sucesso pela sua criatividade e originalidade na preparação de novas receitas. Neste contexto a programação e o desenvolvimento são semelhantes à culinária e saber detectar qual é o perfil do profissional, nem que seja através de uma simples pergunta como “por que o nome da variável é foo?” pode ajudar muito a identificar o perfil do profissional e guiar a carreira de quem está envolvido com programação.



Esta entrada foi publicada em Apresentação, Programação e marcada com a tag , , , , , , , , , , , . Adicione o link permanente aos seus favoritos.

2 respostas a O que significa foo ou bar no nome de variáveis?

  1. Sempre me deparei com essas variáveis nos exemplos da documentação do PHP, e de tanto vê-las e suas variações, acabei me acostumando, pegando a ideia sem saber o que significam realmente.

    Ainda prefiro a forma do Python, que além de usar referências a Monty Python, incentiva essas (piadas) referências dentro da documentação. Acredito que a variável mais icônica seria a “spam”, e com uma pequena pesquisa, conhecer a origem da palavra para designar emails indesejados inspirado num quadro de humor.

    Achei bastante interessante e esse texto vale pela relação e reflexão feitas dos perfis de profissionais. Parabéns.

  2. Vale lembrar também das variáveis spam e eggs, da documentação do Python. São baseadas num quadro do programa britânico Monty Python, onde tudo que é servido num bar é um presunto temperado da marca Spam com ovos fritos. Daí originou o termo spam como algo indesejado vindo no nosso e-mail. Abraço

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *