Como determinar se existe um código excluído útil no controle de origem?

9

Então, eu estava lendo essa pergunta. Devo remover o código não referenciado?

Algumas dicas foram para excluir código não referenciado, pois o código está no controle de origem para referência, caso seja necessário posteriormente.

Como você organiza esse código excluído para que uma versão posterior de você (ou outro programador) possa encontrá-lo mais tarde? Você cria um ramo separado ou o marca no controle de origem de alguma forma?

Eu nunca ressuscitei o código excluído fora do controle de origem antes, apenas o usei para rastrear alterações no código que ainda está ativo. Já referenciei ramos antes quando eles continham o trabalho experimental de outra pessoa, então talvez seja uma boa maneira de marcar seções interessantes de código que são excluídas no tronco?

Peter Smith
fonte
o que vcs você está perguntando avout? soa como svn
gnat 14/03
svn é o que eu tenho em mente, mas poderia se aplicar a qualquer controle de origem, eu acho?
Peter Smith
Você diz: "O que tenho em mente são projetos cancelados ou adiados" em uma reação a uma resposta. Eu acho que você deve editar sua pergunta, porque isso é bem diferente de "código não referenciado".
Pieter B

Respostas:

6

A menos que você esteja experimentando um ramo e ainda não tenha certeza de qual solução será reintegrada, geralmente você não se refere ao código excluído.

Você pode, em raras ocasiões, procurar explicitamente por código removido que se lembra vagamente de resolver um problema que está enfrentando no momento . Porém, o motivo mais típico para você ver o código excluído é quando você está pesquisando no backlog para entender algo sobre o código ou comportamento atual de um aplicativo em relação ao código ou comportamento histórico.

Especificamente, você pode ser ...

  • fazendo uma revisão geral do código / compreendendo um refator
  • procurando o commit que introduziu o bug X
  • satisfazendo sua curiosidade / procurando o commit que resolveu um bug
  • reimplementando um recurso ou recurso semelhante
  • entender código ou dados que parecem funcionar em conjunto com código que não existe

... etc.

E nesses casos, você normalmente não está ressuscitando código antigo. Você está apenas entendendo algo que vê agora usando código removido para contexto ou orientação.

svidgen
fonte
4

Acho que a resposta é: a grande maioria dos programadores não se importa em fazer referência a códigos excluídos. Por várias razões. Algumas razões que me vêm à mente são:

  • Provavelmente o mais importante, pura preguiça ...

  • A maioria nunca sentiu a necessidade de ressuscitar algum código; portanto, eles não têm nenhuma experiência que os motive a tornar o código mais fácil.

  • A maioria dos códigos excluídos é excluída por um motivo. Geralmente, ele é substituído por outro código melhor, funcionalmente equivalente ou mais poderoso. Por que alguém iria querer ressuscitar o código inferior?

    Observe que isso também é uma questão psicológica novamente: a maioria dos programadores está bastante orgulhosa dos resultados de seu trabalho. Como poderia se lembrar que ainda havia algum valor no que eles substituíam?

  • Como a maioria dos códigos não é puramente excluída, mas substituída, as interfaces que foram alteradas na transição fornecem informações suficientes se você realmente precisar rastrear o código excluído devido a algumas regressões introduzidas pelo novo código.

Mas, independentemente de quantas razões mais ou menos válidas você possa deixar por trás desse desrespeito ao código morto, acho que é realmente apenas um "não se importa" da parte dos programadores. E mesmo se você tentar marcar itens excluídos de alguma forma ou de outra maneira, esteja preparado para ser completamente ignorado com esse esforço ...

cmaster - restabelece monica
fonte
Acho que vou tentar responder o porquê. Se o código for substituído, faz sentido após um curto período de tempo, o código excluído não é mais realmente necessário. O que tenho em mente são projetos cancelados ou adiados. Especialmente aqueles em que uma grande quantidade de funcionalidade foi desenvolvida ou alterada, mas, no final das contas, não foi totalmente concluída e não usada na produção atual.
Peter Smith
11
@ PeterSmith: Você deve criar ramificações separadas para esse código. Então não há necessidade de excluir o código, pois ele não existe no ramo de trabalho.
JacquesB
Além do que o @JacquesB disse, se você tiver algum código que não seja usado, ele tende a ficar desatualizado rapidamente. Você poderá reviver um ramo morto depois de um ano, depois de cinco anos precisará reiniciar do zero. O ramo morto ainda pode ser útil como fonte de idéias, mas seu próprio código provavelmente não será mais utilizável.
cmaster - restabelecer monica 14/03
1

Esta pergunta provavelmente se refere a "Como você mantém a rastreabilidade dos seus check-ins VCS no banco de dados de bugs e nos requisitos do sistema?"

Os horários em que as pessoas ressuscitam o código do controle Source tendem a ser aqueles em que você descobre que algo foi quebrado acidentalmente e precisa ser trazido de volta.

A coisa mais importante nesse cenário para quem procura um pouco específico de código removido é que ele pode rastreá-lo facilmente, pesquisando no banco de dados de requisitos e na ferramenta de rastreamento de bugs; porque é provável que eles estejam procurando pelo requisito específico ou palavras que descrevam a funcionalidade. É improvável que eles saibam o nome do arquivo de origem ou a classe / função que foi removida.

Se você deseja rastrear algum código interessante / experimental que precisa ser retirado antes do lançamento, você pode simplesmente rastreá-lo com alguns tickets de "bug" ao longo das linhas de "Remover código não utilizado para ..." . Ou talvez introduza um novo tipo de ticket no sistema para o recurso Prototype .

Portanto, para responder diretamente à pergunta - não use ramos / tags no seu sistema VCS para rastrear o código excluído - use sua ferramenta de rastreamento de alterações.

Ben Cottrell
fonte
0

O conselho é destinado a pessoas que mantêm código obsoleto na base de código "por precaução". Como o código ainda existirá no controle de origem, você não deve ter medo de excluí-lo. Você realmente não organiza o código excluído como tal, pois o ponto principal é que ele não é mais necessário. Você acabou de adicionar uma mensagem de confirmação que indica o que foi alterado e excluído na confirmação. A mensagem de confirmação mais relevante para o código excluído é a mensagem no momento em que o código foi adicionado inicialmente, não a mensagem em que foi excluído novamente.

"Trabalho experimental" é realmente uma questão diferente. Você deve ter um ramo separado para isso.

JacquesB
fonte