Codificando elegância

January 1st, 2008 § 0 comments

A equivalência entre elegância, beleza e correção é um quase axioma nas ciências exatas, principalmente em relação aos domínios mais puros da matemática. Bertrand Russell expressou essa correspondência da seguinte forma:

A matemática, corretamente vista, possui não somente verdade, mas beleza suprema–uma beleza fria e austera, como a de uma escultura, sem apelo a qualquer parte da nossa fraca natureza, sem as belas armadilhas da pintura ou música, e ainda sublimemente pura, e capaz de uma perfeição estrita tal qual somente arte majestosa pode mostrar. O verdadeiro espírito de deleite, a exaltação, o senso de ser mais do que Humano, que é pedra de toque da mais alta excelência, será encontrada na matemática tão certamente como na poesia.

Bertrand Russel, The Study of Mathematics

Código, uma vez que sua dimensão matemática seja considerada, possui a mesma correspondência intrínseca entre beleza e correção. Embora, por sua natureza, código possui características mutáveis que não lhe dão a beleza fria e fixa a que Russell alude na citação acima, o fato de que código e seus produtos possuem um imperativo estético é algo que fica óbvio mesmo para o programador mais inexperiente. Em uma pequena medida, mesmo usuários podem chegar a essa conclusão ao descrevem uma determinada aplicação ou funcionalidade como usável.

Muita dessa similaridade deriva da economia incremental que pode ser obtida em código com refinamentos sucessivos de funcionalidade. De fato, o autor de O Pequeno Príncipe certa vez descreveu perfeição nos seguintes termos:

Perfeição é obtida, não quando não há mais nada a se adicionar, mas quando não há mais nada a ser removido.

Antoine de Saint Exupéry, Terre des Hommes

O critério de Exupéry é uma excelente ferramenta de validação para o que código–e por extensão qualquer um de seus demais produtos–deve ser em sua forma final. Há beleza em código, para usar o que Russell diz, tão certamente como o há nas mais belas poesia.

Para o intelecto formalizado de um programador, essa beleza é visualmente clara naquilo que ele produz e, ainda mais, é facilmente expressa através de reduções sucessivas ao núcleo do que se deseja executar. E isso depende não só do programador como das ferramentas que ele escolher empregar. Como outro grande programador disse:

Programas feios são como pontes feias: é muito mais provável que elas caiam dos que pontos bonitas porque o modo como humanos (especialmente humanos engenheiros) percebem beleza está intimamente relacionado com nossa capacidade de processar e entender complexidade. Uma linguagem que torna o processo de escrever código elegante difícil também torna difícil escrever código bom.

Eric S. Raymond

Sendo uma função das ferramentas escolhidas e do senso inato de programação, é possível, eu acredito, escolher propositadamente como codificar elegantemente. É uma questão de treino e de opções, algo sobre o qual todo programador deveria pensar regularmente em sua carreira. Treinar-se para reconhecer e produzir beleza pode parecer impossível até que considerar que código é mais difícil de ler do que se escrever. Código elegante, por sua economia e concisão naturais, será necessariamente mais fácil de ler e reconhecido como tal.

Em última instância, portanto, o desafio de cada programador é codificar elegância, evoluindo a cada dia na produção e reconhecimento de código que atende padrões de concisão, correção, simplicidade e elegância. O que me leva a outra citação, que resume a relação entre simplicidade e elegância:

Simplicidade levada ao extremo se torna elegância.

Jon Franklin

Eu já escrevi várias vezes aqui sobre simplicidade e acredito que essa citação incorpore o núcleo do que eu estava querendo dizer. Não existe elegância sem legibilidade e não existe legibilidade sem simplicidade.

Sendo assim, o conselho que eu deixo para os que estão começando em programação ou para aqueles que estão sentido seu código se embaralhar, é este: treine a si mesmo para codificar com elegância, refinando seu código a cada momento, em um processo incremental enquanto você puder trabalhar no mesmo sem comprometer o resultado final ao qual você deseja chegar. Quando você menos perceber, elegância será segunda natureza para você, com todos os benefícios que isso pode trazer.

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading Codificando elegância at Superfície Reflexiva.

meta