Google Analytics

sábado, 26 de fevereiro de 2011

As "Regras de Ouro" do desenvolvimento de software

  1. Não se repita.
  2. Não separe o que deve estar junto.
  3. Não junte o que deve estar separado ou coisas que não estão relacionadas.
  4. Guarde as coisas perto de onde elas são usadas.
  5. Teste tudo que você faz. (O que você testa, funciona de primeira; o que você não testa, dá pau.)

quarta-feira, 23 de fevereiro de 2011

Para quem se escreve o código-fonte?

Bom, todo (ou quase todo) software que escrevemos possui código-fonte. Mas quando estamos escrevendo este código quem devem ser os "leitores" a quem o dirigimos? Costumo dizer que a resposta dada por um programador para esta pergunta (e o quanto ele aplica a resposta na prática) definem o nível de habilidade deste programador.

Os programadores mais iniciantes ou tacanhos pensam que se deve escrever para que o computador entenda e isto basta. Programadores avançados sabem que se precisa escrever para outros programadores lerem. O que passa desapercebido é que devemos ser claros na nossa escrita e, para isso, devemos ter um vocabulário rico.

Em programação, muitas vezes se pode escrever operações ou expressões diferentes que levam a um mesmo resultado. Usar estas diferenças para expressar melhor o que o programa faz e como o programador pensou na solução é o que eu chamo de ter um vocabulário rico. Aumentamos o nosso vocabulário de programação do mesmo jeito que o de português: estudando, lendo bons textos (no caso, lendo programas), escrevendo com cuidado e pedindo para pessoas experientes revisarem nossos "textos".

Em programação, muitas vezes se usa o termo "idioma" para se referir às peças de vocabulário. Em outros artigos, vou dar alguns exemplos de idiomas em C++, procurando mostrar diferentes idiomas cujos resultados são idênticos para o computador, mas que dizem coisas diferentes para quem lê o código.

Isto me lembra de uma discussão recorrente que tenho com programadores: Eu dizendo "Isto está errado." e o programador respondendo "Mas funciona, logo está certo". Nem tudo que funciona está certo, justamente porque o código pode estar fazendo a coisa certa, mas dizendo a coisa errada. Ou seja, está escrito para o computador, mas não para os leitores humanos.

Vamos a alguns exemplos:

int some16BitVal;
sint_16 some16BitVal;

Mesmo que sint_16 seja um define ou typedef para int, a linha de cima está errada. Quando se escreve int, se está dizendo: preciso de um inteiro que seja o mais eficiente possível nesta arquitetura, mas não me importa o seu tamanho. Se precisamos de tamanho definido, o correto é expressar isto com um tipo.

Outra bem comum: Aproveitar uma constante para dois usos só por que, coincidentemente elas têm o mesmo valor. Se você usa uma mesma constante (e.g. const int mySize=33;) em vários pontos do código, você está dizendo que obrigatoriamente e irrevogavelmente todos aqueles pontos estão ligados e que mudando num todos tem de ser mudados juntos, mantendo todos sempre o mesmo valor.




terça-feira, 22 de fevereiro de 2011

Backup de blog

O comando

wget -e robots=off -E -H -k -K -p -r -l 1 http://lg-fotos.blogspot.com

parece fazer um backup completo de um blog.