【问题标题】:Is grouping your verification code in one Ruby method a bad idea?将您的验证码分组到一个 Ruby 方法中是个坏主意吗?
【发布时间】:2011-02-27 05:54:51
【问题描述】:

想象一下我有这样的课程:

class A
   attr_accessor :a
   attr_accessor :b

   def check
      raise "a must meet some condition" if !condition(@a)
      raise "b must meet some condition" if !condition(@b)
   end

   def do_some_work
      check()
      # more work here
   end

   def do_some_more_work
      check()
      # other work here
   end
end

在另一个方法而不是当前方法中为访问器设置先决条件是不好的做法吗?

【问题讨论】:

    标签: ruby exception refactoring


    【解决方案1】:

    最好检查一下分配何时发生。 快速失败。

    class A
      attr_reader :a, :b
    
      def a=(new_a)
        raise "a must meet some condition" if !condition(@a)
        @a = new_a
      end
    
      def b=(new_b)
        raise "b must meet some condition" if !condition(@b)
        @b = new_b
      end
    
      def do_some_work
        # Do the work, knowing @a and @b are valid
      end
    
      # ...
    end
    

    【讨论】:

    • 如果条件包括检查它们不为零怎么办?
    • @Geo,如果它们不应该是nil,您可能希望将它们传递给构造函数。例如:A.new(:a => "some value", :b => "another value")A.new("some value", "another value")
    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 2012-05-02
    • 2011-05-20
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多