V
Victor \Zverok\ Shepelev
Hi all.
I have some huge class with aspects of functionality spreaded in several
source files.
And in some of those aspects there is the same picture:
---
class MyClass
def push_something(obj)
@something_list ||= []
@something_list << obj
end
def use_something(i)
(@something_list ||= [])
end
end
---
Then I note (through profiler) various push_XXX spend too much time in
checking is @XXX_list initialized. Then I change it:
---
class MyClass
alias :initialize_without_something :initialize
def initialize(*arg)
initialize_without_something(*arg)
@something_list = []
end
def push_something(obj)
@something_list << obj
end
def use_something(i)
@something_list
end
end
---
Now push_XXX and use_XXX work cleaner and faster, but all those initialize
aliases (now I have 5 or 6) don't seem to be very elegant.
Is there better solution?
(to be clear, all those push_XXX are NOT similar - some of them push object
to hashes, others to arrays, params count differ and so on - so, they can't
be generated at once through metaprogramming)
Thanks.
V.
I have some huge class with aspects of functionality spreaded in several
source files.
And in some of those aspects there is the same picture:
---
class MyClass
def push_something(obj)
@something_list ||= []
@something_list << obj
end
def use_something(i)
(@something_list ||= [])
end
end
---
Then I note (through profiler) various push_XXX spend too much time in
checking is @XXX_list initialized. Then I change it:
---
class MyClass
alias :initialize_without_something :initialize
def initialize(*arg)
initialize_without_something(*arg)
@something_list = []
end
def push_something(obj)
@something_list << obj
end
def use_something(i)
@something_list
end
end
---
Now push_XXX and use_XXX work cleaner and faster, but all those initialize
aliases (now I have 5 or 6) don't seem to be very elegant.
Is there better solution?
(to be clear, all those push_XXX are NOT similar - some of them push object
to hashes, others to arrays, params count differ and so on - so, they can't
be generated at once through metaprogramming)
Thanks.
V.