曾经有人告诉我,具有一个输入和一个输出(不完全是一个)的函数在被调用时不应打印消息。但我不明白。是为了安全还是为了约定?
让我举个例子。如何处理尝试访问具有不正确索引的顺序列表中的数据的尝试?
// 1. Give out the error message inside the function directly.
DataType GetData(seqList *L, int index)
{
if (index < 0 || index >= L->length) {
printf("Error: Access beyond bounds of list.\n");
// exit(EXIT_FAILURE);
}
return L->data[index];
}
// 2. Return a value or use a global variable(like errno) that
// indicates whether the function performs successfully.
StateType GetData(seqList *L, int index, int *data)
{
if (index < 0 || index >= L->length) {
return ERROR;
}
*data = L->data[index];
return OK;
}