例如,假设我们有User
个,与Group
,Event
和其他User
相关Membership
s ,Rsvp
和Friendship
分别为。
我们应该在哪里通过功能/关系名称(“成员”,“rsvp”,“朋友”)来引用对象的实例,我们应该在哪里通过类名(“用户”)引用对象的实例? 即。何时是User
“用户”,何时是User
“成员”?
我们在模型中使用哪个? (本例中为group.rb)
has_many :members, through: :memberships, source: :user
# vs.
has_many :users, through: :memberships
我们在控制器中使用了哪些内容? (本例中为groups_controller.rb)
@members = @group.members # or @group.users, depending on the model
# vs.
@users = @group.users
我们在查看中使用了哪些内容? (本例中为groups / show.html.haml)
- @members.each do |member| # or @users.each, depending on the controller
= "This is a member named #{member.name}"
-# vs.
- @users.each do |user|
= "This is a member named #{user.name}"
使用功能/关系名称似乎更具可读性,但使用类名更容易记住。有没有人发现(或发明!)这种事情的彻底和逻辑约定?
答案 0 :(得分:1)
我的惯例是始终使用函数/关系名称。我不明白为什么你说用类名更容易记住和重构。我个人发现使用函数/关系名称时一切都更容易。它也更“灵活”,因为如果明天你决定允许组在其他组内,那么成员仍然有意义,但用户不是那么正确......用户或类名是“当前”实现/解决方案您使用的是什么...功能或关系名称是该对象的使用方式...它与“界面”或您期望它具有的相关性...所以您关注它应该是什么做什么,它应该解决什么,而不是它如何做到ATM。
通过查看上下文和/或运行测试来推断某些类型或类型的东西通常也很容易,因此我认为函数关系名称会添加许多有用的信息,而另一个会添加无用的信息,这可能比对手更好。