Attualmente leggendo Clean Code , e gli autori sembrano implicare che qualsiasi funzione con un'arità maggiore di 3 dovrebbe essere evitata a tutti i costi.
Sfortunatamente sto incontrando un problema in cui mi trovo di fronte a un metodo di classe con un'arità di 4 (5 se conti self
)
def start_job(self, operation, name, external_id, format):
...
Tutti i parametri possono variare e sono necessari per iniziare il lavoro. Tuttavia, se penso all'incapsulamento di tutti quei parametri in una sorta di class
class Job(object):
def __init__(self, operation, name, external_id, format):
ma poi tutti quei parametri sarebbero necessari per __init__
, e avrebbe ancora bisogno di esporre la struttura sottostante dell'oggetto alla funzione start_job
. A questo punto, sembrerebbe anche un'invidia alle funzionalità e avrebbe senso cambiare la funzione start_job
alla classe Job
e chiamarla start
.
Qualche idea su come evitare questo odore?