我在Ruby中有以下服务类:
import { A, C, B } from 'some-module';
我想知道长名称的方法是不是很糟糕?
我不想使用评论。
请给我一些意见。
答案 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
。