D
Daniel Finnie
Why is define_method a private method? I can't recall ever using
define_method on the class I was working in, only using
class.senddefine_method)....
Personally, I find that the following:
Class.define_methodfoo, &myBlock)
is much cleaner than this:
Class.senddefine_method, :foo, &myBlock)
What are the advantages to having define_method be private? Are there
any cons to having it public? I can find one con to having it private
and no pros, which leads my to my main question...why is it private?
Also, a quick philosophy question:
What is the point of private methods if you can bypass their private
status so easily? I know it isn't meant as a security measure or
anything but it just seems silly. The only reason I can think of is
having too many methods cluttering up the RDocs if everything was
public, but this is easily solved by having a method being private just
meaning that it doesn't show up in the docs.
The same arguments apply to protected methods also, IMO.
Now, I know someone will mention that Ruby 1.9 won't allow calling
private methods with an explicit receiver through send, but, according
to my "research," Kernel#__send and Kernel#funcall will.
(http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9#l22)
Thanks,
Dan Finnie
define_method on the class I was working in, only using
class.senddefine_method)....
Personally, I find that the following:
Class.define_methodfoo, &myBlock)
is much cleaner than this:
Class.senddefine_method, :foo, &myBlock)
What are the advantages to having define_method be private? Are there
any cons to having it public? I can find one con to having it private
and no pros, which leads my to my main question...why is it private?
Also, a quick philosophy question:
What is the point of private methods if you can bypass their private
status so easily? I know it isn't meant as a security measure or
anything but it just seems silly. The only reason I can think of is
having too many methods cluttering up the RDocs if everything was
public, but this is easily solved by having a method being private just
meaning that it doesn't show up in the docs.
The same arguments apply to protected methods also, IMO.
Now, I know someone will mention that Ruby 1.9 won't allow calling
private methods with an explicit receiver through send, but, according
to my "research," Kernel#__send and Kernel#funcall will.
(http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9#l22)
Thanks,
Dan Finnie