R中检查和记录函数前置条件和后置条件的惯用方法是什么?我认为Eiffel
内置require
和ensure
结构或D
的in
和out
块在这里是最先进的,但大多数语言都没有这些烘焙,所以已经开发了最佳实践来近似它们。
通过检查前提条件,我的意思是,如果传入不符合函数假设的数据,则会引发某种运行时异常。 目前,对于我在函数开始时能想到的每个前提条件都有一个stopifnot
语句。这同样适用于后置条件,但与返回值而不是参数有关。
此外,是否有标准方法来记录这些前提条件和后置条件是什么?例如,在Java的JavaDoc注释中拼写这些是非常标准的。
在这方面,R 中的最佳实践是什么?
S4 类的有效性检查,其中检查通过"setValidity"与类定义一起存储。例如,请参阅:
http://www.r-project.org/conferences/useR-2004/Keynotes/Leisch.pdf
请参阅?stopifnot
或
对于更友好的错误消息,但更详细的代码if (condition) stop("...message...")
。
在文档方面,我建议您查看roxygen2
包。它与JavaDoc和Doxygen相当,因为它将文档与代码一起存储在源文件中。有许多项目需要定义,例如:
- 什么是输入参数
- 函数返回什么
但这并不能阻止您创建自己的pre
和post
项来记录前置和后置条件。有关roxygen2
的更多信息,请参阅 CRAN 或 StackOverflow。