Como lidar com uma função incorreta no código de produção?

28

Recentemente, deparei com uma biblioteca Python no GitHub. A biblioteca é ótima, mas contém um erro de digitação flagrante em um nome de função. Vamos chamá-lo dummy_fuction()enquanto deveria ser dummy_function(). Essa função é definitivamente "in natura" e provavelmente usada em sistemas embarcados.

A primeira coisa que vem à mente é adicionar uma segunda versão da função com o nome correto e adicionar um aviso de descontinuação à primeira versão para a próxima versão.

Três perguntas:

  1. A abordagem acima poderia ter consequências não intencionais?
  2. Existe uma abordagem padrão para esse tipo de problema?
  3. Por quanto tempo deve ser deixado qualquer aviso de descontinuação?
Jamie Bull
fonte
11
Essa é uma situação (mesmo que não seja muito frequente) na qual uma linguagem estática é muito mais robusta que uma dinâmica: um compilador pode verificar se sua função renomeada já existe.
Giorgio
7
veja também referenciador HTTP [sic]
AakashM 2/14/14
2
Eu também apontaria o mod_speling do Apache , mas isso pode ter sido intencional.
Reponha Monica iamnotmaynard
11
@AakashM: Adoro como o artigo da Wikipedia agora usa a grafia incorreta e correta em toda a página (mesmo quando se refere ao objeto, não ao termo), com a versão incorreta da grafia sendo mais prevalente!
Martijn Pieters
Outra coisa boa sobre o http_referer- "É como quando eu fiz o campo de referência. Eu não senti nada além da tristeza por minha escolha de ortografia. Agora estou tentando corrigir a ortografia no OED, pois minha ortografia é usada vários bilhões de vezes por minuto mais que o deles ". - Phillip Hallam-Baker
Jamie Bull

Respostas:

29

Em primeiro lugar, a política depende do mantenedor.

Eu acho que sua pergunta é interessante, mas principalmente baseada em opiniões.

Na minha opinião pessoal, sua abordagem é sólida: renomeie a função e deixe a versão incorreta como um artefato obsoleto, redirecionando para a correta.

A abordagem acima poderia ter consequências não intencionais?

Poderia quebrar o código, por exemplo. se alguém também não suportasse o erro de ortografia e implementasse uma versão renomeada. Agora haverá um conflito de nomes assim que a biblioteca for atualizada.

Existe uma abordagem padrão para esse tipo de problema?

Não cometa erros de ortografia ao escrever uma biblioteca;)

Por quanto tempo deve ser deixado qualquer aviso de descontinuação?

Acredito que a descontinuação deva ser mantida até o próximo grande lançamento (quando o primeiro dígito no número da versão for aumentado).

É quando algumas quebras de compatibilidade com versões anteriores justificadas são toleráveis, e cabe aos usuários da biblioteca garantir que seu código ainda seja compilado.

Apenas certifique-se de apontar isso no changelog: pessoal, se você usou dummy_fuction, substitua-o por dummy_functiontodos os lugares e você estará pronto.

Se a biblioteca não tiver controle de versão, como pode ser - é um bom argumento iniciar o controle de versão.

Konrad Morawski
fonte
11
Bom ouvir. A biblioteca é versionada para que a abordagem do controle de versão pareça boa. Na verdade, ele possui seu próprio IDE, para que a versão incorreta possa ser ocultada da ferramenta de conclusão de código, o que deve impedir que novos usuários a usem. Se eu pudesse lhe dar mais um +1 pela resposta para o segundo trimestre, eu daria!
Jamie Bull
2
Essa é a abordagem que eu já vi em outros softwares. Eu uso uma API de terceiros para um software que desenvolvo e a API deles contém um método getter que contém um erro de digitação. O problema foi corrigido renomeando o método e criando um método fictício com a ortografia antiga (incorreta) que simplesmente chama a versão correta. O método fictício não contém outra documentação além de mencionar que está obsoleto e um link para a versão correta. Esse método existe há anos , para evitar a quebra de qualquer compatibilidade com versões anteriores.
Karl Nicoll