在R中检查和记录函数前置条件和后置条件的惯用方法是什么?我会考虑在Eiffel
和require
构造中内置ensure
或者D
的{{1}}和in
阻止了这里的最新技术,但是大多数语言都没有这些,因此开发了最佳实践来近似它们。
通过检查前提条件,我的意思是,如果传递了不符合函数假设的数据,则会抛出某种运行时异常。目前,对于我在开始时可以想到的每个前提条件都有一个out
语句。功能。这同样适用于后置条件,但是关于返回值而不是参数。
此外,是否有标准的方法来记录这些先决条件和后置条件是什么?例如,在Java中用JavaDoc注释拼写这些是非常标准的。
R在这方面的最佳做法是什么?
答案 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相当,因为它将文档与代码一起存储在源文件中。有许多项目需要定义,例如:
但这并不能阻止您创建自己的pre
和post
项目来记录前后条件。有关roxygen2
的更多信息,请参阅CRAN或StackOverflow。