在“C编程语言的JPL机构编码标准”中,我在规则15(第14页)下面找到了以下句子:
“这与使用总功能优于非全部功能的原则相一致。”
我之前没有听过“全部功能”。这是什么?你能给我一些总函数的例子吗?
以下是JPL文档的链接。
答案 0 :(得分:7)
在文件的下一句中对此进行了解释:
设置总功能来处理所有可能的输入值,而不是 只是那些软件预期的参数值 功能正常。
我认为这本来是一个数学术语。 总函数是对所有可能的参数值具有明确定义的行为的函数。
非总函数的一个示例是strlen()
,如果其参数是空指针,或者指针无效,或者指向没有空'\0'
的数组的指针,则具有未定义的行为字符。 (至少在便携式C中,没有任何方法可以使strlen()
检测并处理所有可能的无效参数。)
total 函数,在文档中使用的意义上,为所有可能的输入返回有意义的结果,或者检测任何无效的输入并以某种明确定义的方式报告错误。
答案 1 :(得分:1)
总函数是一个函数,它为每个可能的输入值定义(并暗示,修正)值。也就是说,JPL表示最好编写总是给出正确答案的函数,而不是那些只为某些人在编写函数时所考虑的值范围给出正确答案的函数。
但是,如果编写的函数不是总计(其适用范围小于其输入类型的范围),则应添加检查以确保生成错误每当遇到无法提供正确输出的输入值时,而不是继续使用无效状态。