Esiste un modo per applicare il principio di responsabilità singola a una funzione in cui è necessario che due elementi si ripetano in un ciclo per non dover ripetere l'iterazione due volte?
Ad esempio, supponiamo di avere una funzione come la seguente (in pseudo-Python):
def process_stuff(list):
for item in list:
process_one_way(item)
process_another_way(item)
In questa funzione, i dati devono essere elaborati due volte in due modi completamente separati (in particolare, un esempio con cui ho lavorato di recente coinvolge sia la creazione di alcuni oggetti dai dati nell'elenco, sia la generazione di JSON separati per un altro scopo). Sento che questo viola l'SRP perché questa funzione sta facendo due cose completamente separate con i dati. Un modo naturale per separarli sarebbe:
def process_stuff(list):
process_one_way(list)
process_another_way(list)
def process_one_way(list):
for item in list:
# process
def process_another_way(list):
for item in list:
# process
... ma ciò comporta la ripetizione di iterazioni attraverso l'elenco due volte, il che sembra uno spreco. C'è un modo migliore per separare questi due compiti o sto fraintendendo qual è l'intenzione dell'SRP?