Assine seus códigos

Quem nunca chegou numa empresa ou projeto, deu de cara com um código horroroso e logo disse: Que droga, quem foi o infeliz que fez esse código tosco? Ou o contrário: Quem foi o cara que fez esse código maneiro?

Essas situações são muito frequentes, principalmente a primeira, com códigos fedorentos. Por isso, eu adoto uma postura: Sempre assino meus códigos.

O que seria assinar o código? Bem, assinar o código é aquela simples documentação que vem logo acima do arquivo, como por exemplo em Java, usando o famoso javadoc:

package xpto;
import x;
/**
* @author Emerson Macedo
*/
public class Abc {
// ...
}

Assinar o código pode parecer meio arrogante mas o objetivo não é esse. O propósito de assinar o código e se expor. Quando você assina alguma coisa, explicitamente está colocando a sua autoria naquilo, ficando sujeito tanto a críticas, quanto a elogios.

Quando algum pintor faz um quadro, ele sempre vem assinado em alguma parte. Dificilmente o autor dessa obra de arte vai terminar esse quadro antes que ele tenha certeza que está com ótima qualidade (pelo menos na visão dele).

E no que isso implica? Isso implica que você (1) vai pensar 2 vezes antes de colocar aquela habitual gambiarra no seu código, (2) vai pensar bem antes de concluir alguma coisa sem devidos testes automatizados e (3) vai ser muito mais responsável com o código que você está desenvolvendo.

Conclusão

Como qualquer desenvolvedor, já desenvolvi códigos ruins em diversos projetos pelos quais passei. Aquele que nunca desenvolveu código fedorento que atire a primeira pedra. Hoje em dia, não desprezo a qualidade daquilo que desenvolvo. Acredito muito que quando assinamos nossos códigos e nos damos conta que outro desenvolvedor/programador irá utiliza-lo futuramente, isso gera um maior cuidado com a qualidade.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

Esta entrada foi publicada em agile, design, engenharia, tdd, testes e marcada com a tag , , , . Adicione o link permanente aos seus favoritos.
  • http://blog.fragmental.com.br Phillip Calçado

    Na minha experiência isso causa um grande problema.

    “Quem escreveu essa porcaria? Ah, foi o Emerson então não vou consertar porque isso *é dele*”

    []s

  • http://codificando.com Emerson Macedo

    @philip
    Realmente pode gerar esse efeito também (apesar de eu achar que não deveria). No caso de um código coletivo de um time, a assinatura pode ser do time ao invés de um membro individual. Desta forma, todos estão comprometidos com a qualidade, já que todo mundo está metendo a mão.

  • http://blogdojoellobo.blogspot.com Joel Lobo

    Não sei como isso poderia funcionar visto que o código – uma classe por exemplo – é alterada por várias pessoas e várias vezes. Então para cada linha teria que ter o nome de quem fez aquela alteração!

    Eu uso um Version Control System.

  • http://codificando.com/sobre Emerson Macedo

    @joel
    Como eu disse acima Joel, quando um código é desenvolvido por um time, o time tem esse compromisso e assina o código. No caso do SCM, vejo isso como natural, mas o objetivo não é olhar o último commit pra ver quem fez, o objetivo foi alertar para qualidade. De qualquer forma, se baixarmos frameworks e bibliotecas na internet, a maioria é assinada por alguém, seja qual for a intenção.

  • http://robsonvf.wordpress.com Robson Farias

    Oi Emerson, concordo. Também acho que gera outro probleminha do tipo: Tu altera tal parte do código, fica, digamos ‘bonito’, assina, ok. Depois de algum tempo, a próxima pessoa pega aquele código, destrói, e não coloca o autor da revisão. Quem fez a caca?

    Mesmo assim, ainda prefiro assinar meus códigos, ainda mais para ter um controle pessoal e diferente do philip, poder dizer : “Peraí, mas a parte que eu fiz foi apenas aquela assinada, o resto, nananina! :) ”.

    Ainda mais importante que assinar o código, é assinar revisões do controle de versões. Ou seja: sempre usando um usuário pessoal (e nunca um impessoal, como muitas empresas fazem).

    Até,

    Robson

  • http://www.mouseoverstudio.com/blog/ Diego Carrion

    Pessoalmente eu acho muito ruim quando abro um codigo e tem um monte de ‘barulho’ que dificulta a leitura do mesmo. Acredito que por o nome de um mesmo num arquivo seja parte desse barulinho.

    Os sistemas de controle de versão façem um excelente trabalho mantendo registros não somente do autor do arquivo, mas do autor da linha ao longo do tempo, na minha opinião deveria ser suficiente.

    abs

  • http://codificando.com/sobre Emerson Macedo

    @Diego
    Como a maioria já disse, os SCMs disponíveis podem fazer esse trabalho. O ponto exposto pelo artigo é saber que o que tem seu nome (ou o nome do seu time), expoe mais e faz com que naturalmente você(s) tenham mais responsabilidade.

  • http://www.adolfosousa.com.br/blog Adolfo Sousa

    Por isso também que eu sou fã de XP. Se existe propriedade coletiva do código, ninguém precisa ficar assinando. Qualquer pessoa da equipe que topar com alguma coisa mal escrita tem a obrigação de refatorar.
    Se as pessoas que fazem o código devem assinar, aqueles que vêem a sujeira e deixam lá sem conserto também deveriam ;)

  • http://codificando.com/sobre Emerson Macedo

    @Adolfo
    Só faltou você ler os comentários para perceber que eu me expressei um pouco mau e o ponto era outro.

    []s

  • Rodrigo Branas

    Olá Emerson,

    No geral, parabéns pelo Blog.

    Na teoria, assinar o código “aumentaria” um pouco a responsabilidade exatamente como você comentou. A pessoa ficaria tendenciada a prestar mais atenção e escrever códigos mais limpos e com menos gambiarras.

    Na pratica é muito difícil que isso funcione, pois como você com certeza sabe e já foi comentado, geralmente varios desenvolvedores diferentes mexem no mesmo código, muitas vezes até ao mesmo tempo e de certa forma eu acredito que o código não tem um único dono e nem ninguém que possa se responsabilizar unicamente por ele.

    É responsabilidade do time prezar pela qualidade e buscar os mesmos objetivos. De nada adianta ter alguém nadando para frente enquanto outros o puxam para trás.

    Abraços!

  • http://codificando.com/sobre Emerson Macedo

    Olá Rodrigo,

    Desde que publiquei esse post, me expressei bem mau e o pessoal caiu dentro mesmo hehehe.

    Se fosse escrever novamente talvez faria de outra forma. O objetivo era dizer que quando você se expõe, acaba por tabela tomando mais cuidado com o que faz e não sai por ai enviando código fedorento.

    Mas novamente reforço que me expressei mau no post.

    []s