Diciamo che voglio avere una funzione per caricare i dati di un progetto sia da un json che da un percorso di file, la prima idea che mi viene in mente sarebbe avere un paio di funzioni come:
def load_project_from_json(json_data):
...
def load_project_from_path(path):
with open(path) as f:
load_project_from_json(f.read())
ma poi mi stavo chiedendo se forse sarebbe stato più conveniente realizzare entrambe le attività con una sola funzione, ad esempio:
def load_project(path_or_json)
Molti interroganti mi vengono in mente, ad esempio:
-
come fai a sapere quando è conveniente far esplodere una funzione in più o meno?
-
come posso giudicare se una funzione è una funzione "buona" o no?
-
è la funzione che segue SRP?
Domanda: quale metodo sistematico (insieme di passaggi o regole) potrebbe aiutarmi a estrarre tutte le responsabilità da qualsiasi funzione? La ragione principale è imparare come giudicare la qualità di qualsiasi funzione (non importa se stiamo parlando di funzioni libere o metodi di classe). In questo modo sarò in grado di dire se è necessario o meno il refactoring.
NS: quando dico che il metodo sistematico pensa in termini di semplificazione delle equazioni, se segui una serie di regole sarai in grado di raggiungere un punto in cui l'equazione non può essere ulteriormente semplificata, allo stesso modo mi piacerebbe sapere quali regole potrei applicare per sapere quando una funzione non può essere ulteriormente rielaborata. Spero che l'analogia abbia senso