Assine seus códigos
agile, design, engenharia, tdd, testes fevereiro 10th, 2009Quem 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.

fevereiro 11th, 2009 at 3:24
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
fevereiro 11th, 2009 at 9:16
@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.
fevereiro 11th, 2009 at 10:33
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.
fevereiro 11th, 2009 at 11:11
@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.
fevereiro 11th, 2009 at 15:14
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
fevereiro 11th, 2009 at 21:21
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
fevereiro 11th, 2009 at 22:15
@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.
maio 4th, 2009 at 14:34
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
maio 4th, 2009 at 16:00
@Adolfo
Só faltou você ler os comentários para perceber que eu me expressei um pouco mau e o ponto era outro.
[]s