在 Ruby 生产中使用断言...是还是否?

Ahm*_*ish 5 ruby software-design

所以,这就是交易。我目前在 Ruby on Rails 环境中工作,已经工作约 1 年了。在此之前,我在 C++/Java 领域工作了近十年。我(仍在)试图弄清楚 Ruby 的断言方式是什么。

我不担心技术细节。我知道 TestUnit 有可以在测试环境中使用的断言,并且我知道我可以将自己的断言方法添加到我的 Ruby 项目中,并在生产 Rails 中使用它们来锁定已知条件。问题是:Ruby 的方式是什么来确保代码中我知道应该/不应该发生的事情?

作为记录,我一直在测试中断言并在生产中提高。我仍然忍不住想念我的生产断言......

die*_*mes 5

断言确实不应该在生产代码中使用,原因有两个。

  1. assert x非常实用,因此很难阅读。使用 raise/if 组合可以增加可读性。

  2. 断言并没有明确说明如果条件失败将会引发什么错误。尽管,

    raise ObscureButInformitiveError if condition

    让应用程序层进一步做一些相关的事情。例如向管理员发送电子邮件或写入特定日志。