Questa è una domanda astratta per chiarire un concetto di refactoring nel linguaggio rubino. Supponiamo nel mondo reale che ci sarebbero molte più variabili e metodi nel metodo Furniture Class e Refinish.
Ho una classe chiamata Furniture.
Ha un metodo chiamato ' refurnish(VarnishToUse, TimeToTake)
'.
Questo metodo ha
varnish_cost = Varnish(VarnishToUse).price * TimeToTake
Voglio estrarre il calcolo dei costi in
def VarnishCost
price * TimeToTake
end
quindi la classe Furniture può avere:
def Refurnish(VarnishToUse)
varnish_cost = VarnishCost(VarnishToUse)
end
Come faccio a passare in VarnishToUse in VarnishCost? Il metodo dovrebbe essere
def VarnishCost(Varnish)
...
end
o dovrei impostare una variabile di istanza @varnish = VarnishToUse
nella classe Refinish e quindi aspettarmi che la variabile di istanza sia disponibile nel metodo VarnishCost come ho mostrato sopra? Fa la differenza se l'altro metodo è privato? protetta?
Sto cercando di minimizzare l'uso di variabili e più responsabilità per una classe (SRP).