在Ruby / Rails中使用长方法名称是不好的做法?

时间:2017-01-25 00:02:46

标签: ruby-on-rails ruby

我在Ruby中有以下服务类:

import { A, C, B } from 'some-module';

我想知道长名称的方法是不是很糟糕?

我不想使用评论。

请给我一些意见。

2 个答案:

答案 0 :(得分:0)

是的,这是一种不好的做法。有名称可以描述他们的行为,但是当他们变得太长时,他们会使代码很难阅读。在这种情况下,您已经处于UserMatriculations的范围内,因此您可以轻松地将方法中的前两个单词从current_user_is_matriculated_and_confirmed中移除。无论如何,前两个词并没有给这个名字增添多少。我试着想出与它们存在的上下文相关的名称。如果名称太长,它也可能告诉我一些关于上下文复杂性的有用信息。

(另外我会说这些建议适用于大多数编程语言 - 不仅仅是Rails。)

答案 1 :(得分:0)

您应该重命名此方法,但不仅仅是因为长度。您在方法名称本身中绑定逻辑,例如寻找入学和确认的预科。如果随着时间的推移,您需要处理另一种情况,例如未处理的预科或某些此类情况,该怎么办?或者您需要处理的只是刚刚确认的入学?现在您需要更改逻辑并重命名方法,而不仅仅是更改一个方法内部的逻辑,这很容易出错。由于方法名称本身包含的逻辑,您不希望call!包含它应该启用哪些入学的逻辑。

在这种情况下,我将长方法名称更改为

def matriculations_ready_to_enable
  user.matriculations.matriculated.confirmed
end

然后将这些范围方法添加到您的Matriculation模型中。您可能希望在用户与user.matriculations.matriculated.confirmed之间使用单独的方法,但这样可以清楚地说明需要什么类型的入学,并将该信息仅保留在代码的一部分中。

关于长度本身,Ruby通常倾向于使用较短的方法名称而不是较长的方法名称,但也有利于使用完整的单词与缩写,例如缩写。 def destroy_matriculations vs def dstry_matriculations