Ruby 中带有“has”前缀的布尔约定

Ben*_*dis 1 ruby ruby-on-rails naming-conventions

我有一个名为“订单”的课程。订单可以包含或不包含需要支付的关税(例如全球运输)。我认为有一个名为 has_customs 的布尔值。在 Ruby/Rails 中使用“has”前缀命名布尔值是一个好习惯吗?

BTL*_*BTL 5

我建议您遵循 RuboCop 指南风格:https://github.com/rubocop-hq/rubocop

对于布尔命名约定,建议删除所有前缀(例如has_ is_...),但以问号结尾?。所以在你的情况下会是customs?

以下是相关文档: https://docs.rubocop.org/en/latest/cops_naming/#namingpredicatename https://github.com/rubocop-hq/ruby-style-guide#bool-methods-qmark

  • 我永远不会使用“is_”或“does_”,但我通常会保留“has_”。想想“earth.has_moon?”与“phobos.moon?”。前者检查地球是否有卫星,而后者检查火卫一是否是卫星。删除所有前缀可能会导致谓词方法不明确。 (3认同)
  • @Stefan我会同意“有点做作”(尽管你的反建议暗示它目前正在工作,而不是它是否曾经工作过)我的观点更多的是这样一个事实:a)风格指南只是*指南*; b) 为布尔方法添加前缀可以使其更具可读性,这是 ruby​​ 代码的基石。所以我当然不会对“ruby.is_awesome?”之类的东西嗤之以鼻,而且说实话,我可能更喜欢它而不是“ruby.awesome?” (2认同)