A volte mi trovo a scrivere classi (in Python, nel mio caso) che sono usate in questo modo:
MyClass(some_args).go()
In altre parole, c'è un solo metodo nella classe che qualsiasi codice esterno chiamerebbe e verrà sempre chiamato solo una volta. Potrebbe esserci un valore di ritorno da go()
, ma spesso non c'è, e quando non c'è, potrei anche chiamare go
dal __init__
della classe.
Quindi perché preoccuparsi della classe, invece di scrivere go()
come funzione autonoma? Perché ciò che accade all'interno di go
è complicato. Potrebbero esserci diversi livelli di chiamate di funzioni nidificate e alcune informazioni necessarie in punti diversi. Se provo a scrivere tutto questo senza una classe, finisco con molte delle funzioni che restituiscono più valori. A volte anche le liste degli argomenti diventano lunghe a disagio. Se avvolgo tutto all'interno di MyClass
, allora posso inserire tutte queste informazioni nelle variabili membro dell'istanza MyClass
. Queste diventano variabili non del tutto globali, e generalmente sono roba che sembra aver senso memorizzare in una classe.
Questa pratica ha un nome? È un modello o un anti-modello? E se quest'ultimo, come dovrei strutturare il mio codice, invece?