验证输入数据。在函数内部或外部,最佳方式

时间:2018-07-18 14:29:01

标签: c function input error-handling

下面是一个函数,它将代表十进制数字的字符转换为具有该数字值的整数。

#define CONVERSION_ERROR -1

int8_t char_to_int (char c)
{
    if ( c < '0' || c > '9' ) return CONVERSION_ERROR;
    return c - '0';
}

从设计角度来说,检查函数输入并像上面的函数一样返回函数内部的错误代码是多么实用。通常,这种类型的函数将在不检查错误代码的表达式中使用,但这样的返回值可能以一种非常不可预测的方式使您的计算混乱。当然,您可以为错误代码选择一个方便的名称,例如 0 ,但这会干扰有效数据。

另一方面,您可以从函数中完全删除输入检查,并将其移到外部某个地方,但是这样做可能会使函数的自包含性降低。

所以我想知道在函数内部执行哪些检查和在函数外部执行哪些检查之间的细线是什么?

0 个答案:

没有答案