1 つの入力と 1 つの出力 (厳密には 1 つではない) を持つ関数は、呼び出されたときにメッセージを出力してはならないと言われました。しかし、私は理解していません。セキュリティのためですか、それとも慣習のためですか?
例を挙げましょう。シーケンシャル リストのデータに不正なインデックスでアクセスしようとした場合の対処方法は?
// 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;
}