在R中检查和记录函数前置条件和后置条件的惯用方法是什么?

时间:2012-05-04 03:52:37

标签: r exception-handling design-by-contract

在R中检查和记录函数前置条件和后置条件的惯用方法是什么?我会考虑在Eiffelrequire构造中内置ensure或者D的{​​{1}}和in阻止了这里的最新技术,但是大多数语言都没有这些,因此开发了最佳实践来近似它们。

通过检查前提条件,我的意思是,如果传递了不符合函数假设的数据,则会抛出某种运行时异常。目前,对于我在开始时可以想到的每个前提条件都有一个out语句。功能。这同样适用于后置条件,但是关于返回值而不是参数。

此外,是否有标准的方法来记录这些先决条件和后置条件是什么?例如,在Java中用JavaDoc注释拼写这些是非常标准的。

R在这方面的最佳做法是什么?

3 个答案:

答案 0 :(得分:5)

S4类的有效性检查,其中检查通过'setValidity'与类定义一起存储。例如见:

http://www.r-project.org/conferences/useR-2004/Keynotes/Leisch.pdf

答案 1 :(得分:4)

请参阅?stopifnot

用于更友好的错误消息,但更详细的代码if (condition) stop("...message...")

答案 2 :(得分:3)

在文档方面,我建议您查看roxygen2包。它与JavaDoc和Doxygen相当,因为它将文档与代码一起存储在源文件中。有许多项目需要定义,例如:

  • 什么是输入参数
  • 该功能返回什么

但这并不能阻止您创建自己的prepost项目来记录前后条件。有关roxygen2的更多信息,请参阅CRANStackOverflow