Pergunta

Atualmente, estou no processo de reestruturação do meu repositório Subversion local, adicionando alguns novos projetos e mesclando nele código legado e dados de alguns repositórios mais antigos.

Quando fiz isso no passado, geralmente coloquei o código legado em uma pasta "legacy" dedicada, para não "perturbar" a nova e "bem estruturada" árvore de código.No entanto, no espírito da refatoração, sinto que isso está um tanto errado.Em teoria, o código legado será refatorado ao longo do tempo e movido para seu novo local, mas na prática isso raramente acontece.

Como você trata seu código legado?Por mais que eu me sinta tentado a guardar pecados antigos na pasta "legado", para nunca mais olhar para ele, em algum nível espero que, ao forçá-lo a viver entre os habitantes mais "saudáveis" do repositório, talvez o legado código terá mais chances de melhorar algum dia?

(Sim, todos nós sabemos não deveríamos reescrever coisas, mas este é meu repositório "divertido", não meus projetos de negócios...)

Atualizar

Não estou preocupado com os aspectos técnicos de acompanhar as várias versões.Eu sei como usar tags e ramificações para isso.Este é mais um aspecto psicológico, pois prefiro ter uma estrutura "limpa" no repositório, o que torna a navegação muito mais fácil - para os humanos.

Foi útil?

Solução

Todo código se torna 'legado' um dia, por que separá-lo?O controle de origem é por projeto/filial ou projeto/plataforma/filial e esse tipo de hierarquia.Quem se importa com quanto tempo está no dente?

Outras dicas

A marcação é uma operação muito barata no subversão.Marque seu código quando você começar a refatorar e em estágios regulares enquanto avança.Dessa forma, é fácil ainda acessar o código antigo (mas funcional) como referência para o seu código novo (mas quebrado).:-)

Aqui está sua análise psicológica gratuita:

O que você tem aqui é um desejo profundamente enraizado de corrigir seu código legado para que ele não seja mais legado.Quando você esconde isso, você está apenas reprimindo esse desejo, tentando evitá-lo porque é uma sensação desconfortável.Se você deixar isso aberto, uma de duas coisas acontecerá:isso acabará deixando você louco e você terá que se matar, ou (mais otimista), você será lembrado de cada parte bagunçada repetidamente até que finalmente desmorone e limpe tudo.

Não esconda a bagunça;limpe.Caso contrário, mais cedo ou mais tarde ele voltará para mordê-lo.

Depende do que você chama legado.Se ao dizer legado você realmente quer dizer 'código de algum aplicativo aposentado que é tão ruim que nunca mais o usaremos', ele deve ser separado do seu código atual.Se for algo do seu projeto atual, mas foi escrito por outras pessoas ou não está de acordo com seus padrões atuais, trate-o normalmente, mas sinalize-o para refatoração no futuro em seu rastreador de problemas.

Usar Definições Externas (svn: externos propriedade) para referenciar seu código legado como faria com um repositório de terceiros.

Então você pode separar seu trabalho de refatoração de seus projetos dependentes e (usando referências de revisão fixas, ou seja,-r1234) seja bem explícito sobre de qual revisão do código legado o projeto dependente depende.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top