Ruby - 解决布尔值,if / then语句,反驳/断言方法,我的代码太基本了吗?

时间:2018-05-19 22:13:06

标签: ruby if-statement boolean

TDD

gem 'minitest', '~> 5.2'
require 'minitest/autorun'
require 'minitest/pride'
require './tire'

class TireTest < Minitest::Test


 def test_the_tire_does_not_start_out_flat
  tire = Tire.new
  refute tire.flat?, "This tire is brand new"
 end

 def test_the_tire_has_a_blowout

  tire = Tire.new
  tire.blow_out
  assert tire.flat?, "I ran over a nail!"
 end
end

CODE

class Tire
 attr_reader :tire

 def initialize
  @tire = false
 end

 def flat?
  @tire
 end

 def blow_out
  @tire = true
 end
end

解决这个测试的方法比我的更好吗?虽然更简单,但您可以分解代码并让其他人阅读它。

1 个答案:

答案 0 :(得分:1)

您可以对现有解决方案进行一些小修改。

  1. @flat对于属性来说是更合适的名称,因为它本身就是轮胎的属性。
  2. 封装attr_reader,除非您需要公开使用的具体案例。
  3. 首选使用attr_reader直接调用实例变量。
  4. class Tire
      def initialize
        @flat = false
      end
    
      def flat?
        flat
      end
    
      def blow_out
        @flat = true
      end
    
      private
    
      attr_reader :flat
    end