Ruby - Обращаясь к логическим значениям, операторам if / then, методам опровержения / утверждения, мой код слишком прост? - PullRequest
0 голосов
/ 20 мая 2018

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 голосов
/ 20 мая 2018

Некоторые незначительные изменения, которые вы можете применить к существующему решению.

  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
...