Come gestire una funzione errata nel codice di produzione?

28

Recentemente ho trovato una libreria Python su GitHub. La libreria è fantastica, ma contiene un errore di battitura lampante in un nome di funzione. Chiamiamolo dummy_fuction() mentre dovrebbe essere dummy_function() . Questa funzione è sicuramente "in the wild" e molto probabilmente utilizzata nei sistemi embedded.

La prima cosa che ti viene in mente è aggiungere una seconda versione della funzione con il nome corretto e aggiungere un avviso di ritiro alla prima versione per la prossima versione.

Tre domande:

  1. L'approccio sopra potrebbe avere conseguenze indesiderate?
  2. Esiste un approccio standard a questo tipo di problema?
  3. Per quanto tempo dovrebbe essere lasciato un avviso di ritiro?
posta Jamie Bull 02.05.2014 - 11:38
fonte

1 risposta

29

Innanzitutto, la politica dipende dal manutentore.

Penso che la tua domanda sia interessante, ma principalmente basata sull'opinione pubblica.

Secondo la mia opinione personale il tuo approccio è corretto: rinomina la funzione e lascia la versione errata come artefatto deprecato, reindirizzandoti a quella corretta.

Could the approach above have any unintended consequences?

Potrebbe rompere il codice es. se qualcuno non fosse in grado di sopportare l'errore di ortografia o implementasse una versione ribattezzata. Ora ci sarà un conflitto di nomi dopo aver aggiornato la libreria.

Is there a standard approach to this kind of problem?

Non fare errori di ortografia quando scrivi una libreria;)

How long should any deprecation warning be left in place?

Credo che la deprecazione debba essere lasciata sul posto fino alla prossima versione principale (quando la prima cifra del numero di versione è aumentata).

Questo è il momento in cui è giustificato un errore di compatibilità con le versioni precedenti, e spetta agli utenti della biblioteca assicurarsi che il loro codice continui a funzionare correttamente.

Assicurati di indicarlo nel registro delle modifiche: ragazzi, se hai utilizzato dummy_fuction , sostituiscilo con dummy_function ovunque e sei a posto.

Se la libreria non ha la versione, come potrebbe essere - è buona norma avviare la versione.

    
risposta data 02.05.2014 - 11:51
fonte

Leggi altre domande sui tag