我一直在努力保持我的方法简短,并且这样做的结果如下:
processor = processor(arg1, arg2)
变量与方法具有相同名称很有意义。那么我听说我可以使用self.
在这一行中澄清我使用的方法,但这似乎仍然会导致解释器的问题,而不是提到任何人阅读代码。但使用get_
加上方法前缀也很奇怪。有什么想法吗?
答案 0 :(得分:2)
从语法上讲,你所做的事情没有任何问题,但它确实有可能使你的代码有点混乱。您可以使用实例变量@processor
而不是局部变量processor
,以使变量和方法之间的区别更明显,但根据您使用它的位置,这可能会产生副作用它将在self
中提供,而不仅仅是在本地范围内。
或者,由于您的局部变量在可读性方面没有增加太多价值,您只需在需要其返回值的任何地方直接调用该方法。
您的版本:
processor = processor(:arg1, :arg2)
# do some stuff
do_something_else_with(processor)
直接使用返回值:
do_something_else_with(processor(:arg1, :arg2))
还值得注意的是,如果你的方法有arity 0(即没有参数)那么你会遇到问题 - 正如你所说,你必须使用self
或添加空方法调用的括号(非常类似ruby):
def processor
return 'something'
end
processor = processor
#=> nil
processor
#=> nil
processor = processor()
#=> 'something'
processor = self.processor
#=> 'something'
最终,您首先使用不同的名称符合您的利益。不容易,但值得花时间。作为一个聪明人once tweeted,"计算机科学中有两件难事:缓存失效,命名事物和逐个错误"。