"Pode ser usado como referência" Eu não tenderia a concordar em ser um bom motivo para deixar código não utilizado. Muitas vezes, apenas uma pequena parte do código não utilizado está realmente demonstrando algo interessante. Existem várias maneiras de documentar e armazenar código útil, mas não utilizado.
Embora o controle de versão contenha um histórico que permita restaurar facilmente uma funcionalidade específica, se você decidir mais tarde o código, sabendo que é necessário procurar no histórico de controle de versão para encontrar xy ou z de quem sabe qual revisão anterior pode ser um pouco entediante e geralmente é ignorado, a menos que você tenha uma idéia bastante específica do que está procurando.
O código pode ser comentado com uma nota sobre quando foi removido e por que não foi simplesmente excluído do código. No entanto, isso geralmente é considerado um estilo inadequado, e o código que não é usado e não é mantido adequadamente pode apresentar todos os tipos de erros, se não for comentado posteriormente; portanto, isso geralmente é melhor como uma etapa temporária de depuração / teste durante a refatoração intermediária do que uma maneira de deixar o código de produção.
Minha maneira favorita de armazenar o código excluído, se parecer útil no futuro, é criar um documento de referência secundário contendo todos os vários fragmentos de código excluído que vale a pena. Cada bloco de código é rotulado com uma breve menção de onde veio ou qualquer outra coisa pertinente para lembrar, como quando foi removido ou o número da revisão em que foi o último no código em. Tudo o que foi removido, mas "potencialmente útil", está em um só lugar, facilmente pesquisável, mas não exige esforço constante para manter e testar continuamente (esse teste é adiado para qualquer ponto em que o código for reintroduzido).