Quando si dovrebbe creare una nuova funzione py piuttosto che modificarne un'altra?

1

Io e un co-sviluppatore stiamo discutendo quando è opportuno lanciare una nuova funzione piuttosto che modificarne un'altra. Con il tweaking intendo un'opzione o un controllo nascosto in una funzione esistente. La domanda potrebbe essere riformulata: in che modo nuovo / diverso dovrebbe essere una nuova funzione?

Nel caso concreto, si tratta di un confronto tra stringhe. Attualmente, la procedura è scritta per un elenco di stringhe. Vogliamo anche confrontare le stringhe di due elenchi diversi tra loro. I documenti sarebbero molto simili e le modifiche al codice includono solo poche righe.

    
posta MERose 20.04.2015 - 19:20
fonte

1 risposta

4

Se una funzione svolge due compiti, o un'attività in due modi diversi, dovrebbe avere due funzioni.

Questo è il principio di responsabilità singola . Sebbene il codice possa "confrontare le stringhe" in entrambi i casi, gli input potrebbero essere diversi o il modo in cui confronta le stringhe potrebbe essere diverso.

Le chiavi da ricordare quando si pensa che sia "intelligente" per sovraccaricare una funzione o aggiungere parametri per farlo funzionare in modo diverso:

  1. L'interfaccia pubblica di una classe o di un modulo (di cui le funzioni sono membri) dovrebbe essere semplice e facile da usare. Evita i parametri che controllano cosa fa una funzione: scrivi due funzioni. Questi parametri inquinano l'interfaccia. All'interno del modulo, le funzioni potrebbero delegare a una singola funzione e ciò va bene: la chiave è evitare di confondere gli utenti dell'interfaccia.
  2. Se possibile, astrarre l'input per la funzione. Esempio: in C ++, algoritmi di libreria standard in genere accettano iteratori per l'intervallo di inizio e fine con quale lavorare Ciò consente a qualsiasi contenitore di lavorare con l'algoritmo, nonché un sottoinsieme di un contenitore. Questo potrebbe rimuovere la necessità di aggiungere più codice sia all'interno della funzione che in una seconda funzione.
  3. Una volta che una libreria o una funzione di utilità è ben definita, testata e documentata, prova a lasciarla da sola a meno che non ci sia un bug. Preferisci aggiungere un'altra funzione (vedi il mio primo punto). Ciò aiuta a mantenere l'interfaccia stabile.
  4. Cerca di evitare soluzioni "intelligenti": ciò implica qualcosa di difficile da comprendere, come operatori ternari annidati o metaprogrammazione del modello . Scegli una soluzione semplice e facile da capire da qualcuno che non è nel tuo team di sviluppo . Le idee intelligenti si trasformano in debito tecnico .
risposta data 20.04.2015 - 19:35
fonte

Leggi altre domande sui tag