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



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

法典

class Tire
attr_reader :tire
def initialize
@tire = false
end
def flat?
@tire
end
def blow_out
@tire = true
end
end

解决此测试的更好方法比我所拥有的更好?虽然更简单,但您可以分解代码并使其对阅读它的其他人有意义。

可以应用于现有解决方案的一些小更改。

  1. @flat属性的名称更合适,因为它本身就是轮胎的属性。
  2. 封装attr_reader,除非你需要一个具体的公开使用案例。
  3. 更喜欢使用attr_reader而不是直接调用实例变量。
class Tire
def initialize
@flat = false
end
def flat?
flat
end
def blow_out
@flat = true
end
private
attr_reader :flat
end

最新更新