Rails中Null对象的命名约定?

时间:2015-10-11 08:13:31

标签: ruby-on-rails ruby null-object-pattern

对于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是常规吗?

Sandi Metz的this article by Avdi GrimmNothing is Something演示文稿均未提及任何空对象命名约定。

1 个答案:

答案 0 :(得分:4)

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

  

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

在您的情况下,这将是找到&#34;域语言&#34;对于一个&#34; null博客。&#34;我找到这些术语的最佳方法是简单地与域用户讨论该主题,并记下他们使用的任何名词。这种方法在书Object Thinking中列出。