terça-feira, 29 de setembro de 2015

Comentários


Primeiramente um comentário em programação é um "texto" que o computador (compilador/interpretador) "ignora", ele está lá no meio do código fonte mas geralmente não altera o comportamento do programa. Cada linguagem de programação define como deve ser escrito esses comentários.

Em Python por exemplo é utilizado cerquilha (#) para iniciar um comentário, ele é finalizado no final da linha.

#eu sou um comentario
#definicao da funcao
def diz_oi():
    print('Oi!')
#eu sou outro comentario
#chama a funcao
diz_oi()

Em C ou C++ são utilizadas duas barras (//) para iniciar um comentário de uma linha e (/*...*/) para comentários de mais de uma linha.

//eu sou um comentario
//isso nao sao comentarios
#include <stdio.h>
#include <stdlib.h>

/*
* Aqui temos um comentario com mais de uma linha
*
*
* =)
*/

int main(int argc,char ** argv){
    //aqui que escreve 
    printf("Hello World!!!");
    /*
      retorna 1 para o S.O. saber que
      o programa executou corretamente
    */
    return 1;
}

Foi utilizado "ignora" entre aspas e o "geralmente não altera", pois em algumas linguagens de programação os comentários começaram a ser utilizados para suprir algumas necessidades, como por exemplo em PHP que não possui suporte a anotações igual a linguagem Java, mas isso é um assunto mais especifico. Para ver exemplos disso recomendo ver exemplos de PHP utilizando o framework Doctrine.

Se comentários não alteram o comportamento do programa, para que servem?
Teoricamente é para ajudar o leitor do código a entender o funcionamento do programa, algumas vezes também são utilizados como lembretes de futuras alteração entre outras coisas.

Resolvi fazer essa postagem depois de ler o seguinte artigo "Seis características presentes em todos os softwares bem escritos" da Computer World.
http://computerworld.com.br/seis-caracteristicas-presentes-em-todos-os-softwares-bem-escritos

Achei interessante que em uma leitura superficial o leitor pode entender que é muito importante ter comentários em seu código. Isso entra em contraste se comparado com o livro Código Limpo que diz claramente para evitarmos comentários. Então resolvi abordar um pouco o assunto.

No livro Código Limpo é defendido que seu código deve ser claro e objetivo, as variáveis/atributos funções/métodos devem ter nomes que revelem suas intenções/comportamento. Partindo deste principio quando existe a necessidade de se comentar o código é devido a falha de expressividade do código. Isso condiz com o que foi dito no artigo da Computer World, que diz que o código deve ser Simples,Facilmente LegívelSustentável(fácil manutenção).

Para que os comentários então?
No artigo da Computer World provavelmente um desenvolvedor disse o seguinte “Para mim, um bom código tem comentários que explicam o que passou na cabeça do autor durante a construção”.
Neste caso o comentário não exprime exatamente o comportamento do código e sim uma intenção  mais genérica ou uma linha de raciocínio. Será que para esses casos houve uma falha de expressividade do código?

Outro ponto negativo dos comentários citados no Código Limpo, é a manutenção dos comentários (comentários enganadores). Nem sempre um programador vai alterar o código e se lembrar de alterar o comentário criando armadilhas para os leitores.

Como um professor meu dizia "O Código é REI".

Porém quando estamos aprendendo a programar com algum professor, geralmente eles incentivam a escrita de comentários, pois ajuda a compreensão da verdadeira intenção do código possibilitando que o professor faça correções. Isso acaba criando um hábito ou um conceito de utilização de comentários, que nem sempre é questionado após a fase de aprendizado.

Em suma vejo que comentários são muito úteis para fins didáticos, porém profissionalmente podem ser evitados já que sua necessidade aponta para a falta de expressividade e simplicidade do código. Sistemas complexos nem sempre precisam de códigos complexos, mas sim da união de diversos códigos simples.


Obrigado!