Ho ereditato un metodo di classe da un altro sviluppatore, che ha il seguente aspetto:
(Nota: Class:X
significa X
è un membro di Class
nel paradigma OOP.)
Class:BigFunction()
{
ImportantValue = calculateImportantValue()
Iterate over Class:Foo from 1 to ImportantValue
Iterate over Class:Bar from 1 to ImportantValue
Iterate over Class:Baz from 1 to ImportantValue
# ... and so on ...
}
Sto prendendo in considerazione il refactoring di qualcosa del tipo:
Class:WrapSeveralSmallFunctions()
{
ImportantValue = calculateImportantValue()
IterateFoo(ImportantValue)
IterateBar(ImportantValue)
IterateBaz(ImportantValue)
# ... and so on ...
}
Class:IterateFoo(ImportantValue)
{
Iterate over Foo from 1 to ImportantValue
}
Class:IterateBar(ImportantValue)
{
Iterate over Bar from 1 to ImportantValue
}
Class:IterateBaz(ImportantValue)
{
Iterate over Baz from 1 to ImportantValue
}
Per principio di singola responsabilità, il codice refactored mi sembra migliore.
Tuttavia, sono anche preoccupato di passare ImportantValue
come argomento per ogni funzione "piccola". La mia preoccupazione è valida? Il refactoring proposto è considerato una buona pratica di codifica o esiste un modo migliore per scrivere questo codice?