5

对于 Rails 应用程序:是否存在命名映射到模型对象的空对象的命名约定?

例子:

#app/models/blog.rb
class Blog < ActiveRecord::Base
end

#app/models/null_blog.rb
class NullBlog # Null Objects are POROs, correct?
  def title
    "No title"
  end
end

# so to implement it I can do this:
blogs = ids.map{|id| Blog.find_by(id: id) || NullBlog.new}
# which allows me to do this and it works, even if some of those ids did not find a blog
blogs.each{|blog| blog.title}

NullBlog常规的吗?

Avdi Grimm 的这篇文章和 Sandi Metz 的Nothing is Something演讲都没有提到任何空对象命名约定。

4

1 回答 1

5

目前还没有主流惯例。可能是因为空对象模式本身还没有被广泛使用。我遇到的对命名准则的唯一引用来自ThoughBot Style Guide,它使用它作为命名规则的示例:

更喜欢在域概念之后命名类而不是它们实现的模式(例如, Guest vs NullUser,CachedRequest vs RequestDecorator)。

在您的情况下,这将是为“空博客”找到“域语言”的问题。我发现找到这些术语的最佳方法是简单地与域用户讨论该主题,并记下他们使用的任何名词。这种方法在《对象思维》一书中进行了概述。

于 2015-10-11T08:21:19.573 回答