Nel refactoring del codice ho trovato un metodo helper get_records_from_file
che ha una firma di ritorno complessa:
class RecordDefinition:
def __init__(self):
self.foo = None
self.bar = None
def get_records_from_file(file_name) -> Dict[int, List[Dict[str, RecordDefinition]]]:
...
Dopo qualche ispezione capisco che questo tipo di ritorno significa davvero:
Dict[record_group_id, List[Dict[record_type_id, RecordDefinition]]]
In altri progetti (e in altre lingue) ho visto cambiare questa cosa in:
Dict[record_group_id, List[RecordTypeCollection]]
Che porta a:
Dict[record_group_id, RecordCollection]
E finalmente termina in:
RecordGroupCollection
In generale, questo tipo di sostituzione è auspicabile? Più esplicitamente, dovrei cambiare oggetti di ritorno complessi come questo in classi orientate agli oggetti? Vedo qui alcuni vantaggi che consentono alle strutture di essere nominate più esplicitamente. Ma questo aggiunge un sacco di codice sotto forma di classi più piccole.
In python ho l'impressione che questo tipo di creazione di classe sia disapprovato. La mia ipotesi è corretta?