我怎样才能避免将我的变量命名为与ruby中的方法名称相同的东西?

时间:2017-08-05 03:28:42

标签: ruby refactoring

我一直在努力保持我的方法简短,并且这样做的结果如下:

processor = processor(arg1, arg2)

变量与方法具有相同名称很有意义。那么我听说我可以使用self.在这一行中澄清我使用的方法,但这似乎仍然会导致解释器的问题,而不是提到任何人阅读代码。但使用get_加上方法前缀也很奇怪。有什么想法吗?

1 个答案:

答案 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,"计算机科学中有两件难事:缓存失效,命名事物和逐个错误"。