Um amigo perguntou "Na sua opinião, quais caracteristicas definem essa "beleza" ou "elegância" de um código?" Segue a resposta abaixo: Beleza e elegância são adjetivos, certo? Esse tipo de argumentação é muita fraca na prática porque um código bonito ou elegante pouco importa se ele não funciona ou não serve para porra nenhuma. Código de desenvolvedor tem que ser funcional, as funções de uma linguagem de programação é como uma língua (português, russo, inglês), o motivo principal é a comunicação, se tem beleza ou é rude, pouco importa porque o objetivo principal de uma língua ou idioma é comunicar melhor e mais objetivamente possível. Linguagem de programação é uma forma de comunicação entre ser humano e o computador. Vou tentar exemplificar: Imagine um poema grande que para alguns especialistas é considerado o melhor poema de todos os tempos. Mas esse poema para um cara que estuda no supletivo a noite na periferia é uma porcaria porque ele não entende mas esse cara acha que uma letra de Rap é o melhor poema, a melhor rima porque ele entende. São dois universos diferentes que não se relacionam, certo? Agora para completar, imagine uma música de MPB, ela lida como poema para um especialista em Letras ou para o fã de Rap é de fácil compreensão porque as palavras usadas são comuns para ambos. O mesmo é com as linguagens de programação, o mais importante é escrever um código funcional e que o maior números de pessoas possam entendê-lo. =) Obs.: Possível atualização deste post. ![]()
Technorati Tags: programação






on Dec 31st, 2006 at 03:19
O paralelo traçado não corresponde a verdade. Eu consigo fazer uma letra de um rap usando latim ou ainda substantivos e adjetivos que possuem as mesmas conotações mas não são conhecidas do grande público. Da mesma forma, posso fazer um “hit” da MPB (como existem aos milhares) “assassinando” o português.
Há bom tempo já foi definido o que é um código bem feito, o qual chamamos de “belo” ou “elegante”. Os pontos são:
a) identado - um código bem feito deve ser legível para o ser humano
b) variáveis que expressam algo - dizer que “$a +$b=$c” somente quando for a equação efetiva. $ValorEntrada é algo muito mais “humano” que $XGSDF
c) escreva menos - quanto menos código escrito, menos manutenção
Assim, um código bem feito com “beleza” e “elegância” atendem preceitos já exaustivamente testados ao longo da história da programação e não é uma, digamos, perfumaria.
Alguns links interessantes sobre o assunto:
http://thc.org/root/phun/unmaintain.html
http://www-128.ibm.com/developerworks/rational/library/nov06/pollice/index.html
http://advogato.org/article/258.html
Abs
on Dec 31st, 2006 at 09:09
Olá Paulino,
Um rap que você escrever em latim para um rapaz que faz rap pode não ser considerado como arte, tão pouco entendível (ele não sabe latim), esse rapaz não considerá esse rap bom ou letra dele.
A diferença é que nós usamos abordagens diferentes, um código belo ou elegante considerado por você é para mim um código legível e eficiente. Ainda sim, o ponto é a forma de comunicação, se consideramos este o ponto relevante e referencial não é o que você abordou.
E francamente, sem paralelos e parábolas, você tem razão, já está nos meus favoritos. =)
on Dec 31st, 2006 at 09:19
Acho que a “Catedral e o Bazar” dão pistas muito interessantes sobre o que é um “código eficiente”. Se você desenvolve software livre e quer que uma comunidade colabore, alguns cuidados são fundamentais, como você disse, ele tem que ser inteligível para diferentes pessoas. Mas isto não é tão simples quanto parece, algumas coisas que fazem com que um código que funciona, se torne também legível:
- Código documentado e comentado
- Padrões de nomenclatura
- Refatoração
- Endentação
- KISS (procure soluções simples)
- Boa modelagem de dados
- Não usar segurança pela obscuridade
Com isso na mão, é bem possível que o código se torne mais fácil de manter e agregar novos colaboradores.