Primeiro, crie uma NEW API, que faça o que você deseja que seja o seu comportamento da NEW API. Se essa nova API tiver o mesmo nome que uma API ANTIGA, anexarei o nome _NEW ao novo nome da API.
int DoSomethingInterestingAPI ();
torna-se:
int DoSomethingInterestingAPI_NEW (int takes_more_arguments); int DoSomethingInterestingAPI_OLD (); int DoSomethingInterestingAPI () {DoSomethingInterestingAPI_NEW (Whatever_default_mimics_the_old_API); OK - nesse estágio - todos os seus testes de regressão ainda passam - usando o nome DoSomethingInterestingAPI ().
NEXT, consulte seu código e altere todas as chamadas para DoSomethingInterestingAPI () para a variante apropriada de DoSomethingInterestingAPI_NEW (). Isso inclui atualizar / reescrever quaisquer partes de seus testes de regressão que precisam ser alteradas para usar a nova API.
NEXT, marque DoSomethingInterestingAPI_OLD () como [[obsoleto ()]]. Mantenha a API reprovada pelo tempo que desejar (até atualizar com segurança todo o código que possa depender dela).
Com essa abordagem, quaisquer falhas em seus testes de regressão são simplesmente erros no teste de regressão ou identificam erros no seu código - exatamente como você deseja. Esse processo faseado de revisar uma API criando explicitamente as versões _NEW e _OLD da API permite que você coexista por um tempo bits do código novo e antigo.
Aqui está um bom exemplo (difícil) dessa abordagem na prática. Eu tinha a função BitSubstring () - onde havia usado a abordagem de ter o terceiro parâmetro como a CONTAGEM de bits na substring. Para ser consistente com outras APIs e padrões em C ++, eu queria mudar para o início / fim como argumentos para a função.
https://github.com/SophistSolutions/Stroika/commit/003dd8707405c43e735ca71116c773b108c217c0
Criei uma função BitSubstring_NEW com a nova API e atualizei todo o meu código para usá-la (deixando NO MORE CHAMADAS para o BitSubString). Mas eu deixei a implementação por vários lançamentos (meses) - e o marquei como obsoleto - para que todos pudessem mudar para BitSubString_NEW (e naquele momento alterar o argumento de uma contagem para o estilo de início / fim).
ENTÃO - quando essa transição foi concluída, fiz outro commit excluindo BitSubString () e renomeando BitSubString_NEW-> BitSubString () (e preteri o nome BitSubString_NEW).