有这样的情况:输入验证是只是为了确保用户的输入是在适当的范围内,而如果不将导致运行错误。我为什么要打扰验证输入和增加适当的用户的计算成本(这是大多数)为什么不应该只是让坏的输入导致运行时错误,我没有验证,以防止它发生不明就里?
并通过验证我的意思是:需要(),断言(),恢复()
有几个原因,你可能需要使用你指的是什么验证。下面我列出其中的一些。
1)确保你的合同不能进入意外状态。预测用户应该如何与合同互动比预测的合同如何被滥用这样的检查,以避免意外状态有助于限制代码路径,以及所产生的攻击向量容易得多。
2)调试和提供反馈给用户。如果你在你的合同代码中的问题,使用要求()允许你给有用的反馈你的合同(通常是您的前端代码)的用户
3)相比于用误用和/或重入相关联的潜在成本这些操作的成本是相当小的。