16
当TDD没有帮助时,如何避免代码中的逻辑错误?
最近,我正在编写一小段代码,以人类友好的方式指示事件的年代。例如,它可能表明该事件发生在“三周前”或“一个月前”或“昨天”。 需求相对明确,这是测试驱动开发的完美案例。我一个接一个地编写了测试,实现了通过每个测试的代码,一切似乎都正常运行。直到生产中出现错误为止。 这是相关的代码段: now = datetime.datetime.utcnow() today = now.date() if event_date.date() == today: return "Today" yesterday = today - datetime.timedelta(1) if event_date.date() == yesterday: return "Yesterday" delta = (now - event_date).days if delta < 7: return _number_to_text(delta) + " days ago" if delta < 30: weeks = math.floor(delta / 7) …