ฉันแก้ไขคำถาม TestFirst.org 09_timer สำหรับการทดสอบ Ruby Rspec แล้ว รหัสของฉันใช้งานได้ แต่ฉันไม่ชอบมัน มันยาวมาก ความคิดเห็นและ/หรือข้อเสนอแนะในการปรับปรุงจะได้รับการชื่นชมอย่างมาก โปรดใส่คำอธิบายเพื่อชี้แจงข้อเสนอแนะใด ๆ เป้าหมายคือการสร้างตัวจับเวลาด้วยตัวแปรอินสแตนซ์ @seconds ซึ่งเริ่มต้นเป็น 0 จากนั้นส่งคืนค่าทั้งหมดเป็นสตริงที่มีรูปแบบชั่วโมง นาที วินาที: 00:00:00 12 วินาที => 00:00:12; 66 วินาที => 00:01:06; และ 4000 วินาที => 01:06:40. ขอบคุณ รหัสด้านล่าง
class Timer
attr_accessor :seconds
def initialize
@seconds = 0
end
def padded(n)
"0#{n}"
end
def time_string
hours = @seconds/3600
h_minutes = ((@seconds%3600)/60)
minutes = @seconds/60
m_seconds = @seconds%60
second = @seconds
seconds = ""
if @seconds < 60
if second < 10
second = padded(second)
end
seconds << "00:00:#{second}"
elsif @seconds > 3600
if hours < 10
hours = padded(hours)
end
if h_minutes < 10
h_minutes = padded(h_minutes)
end
if m_seconds < 10
m_seconds = padded(m_seconds)
end
seconds << "#{hours}:#{h_minutes}:#{m_seconds}"
else
if minutes < 10
minutes = padded(minutes)
end
if m_seconds < 10
m_seconds = padded(m_seconds)
end
seconds << "00:#{minutes}:#{m_seconds}"
end
@seconds = seconds
end
end