在编写函数库时,如果函数参数已经在父库中被检查,是否应该在子库中检查函数参数是否有共识?作为说明,请考虑以下代码片段:
uint8 er_remove(DE_LIST *deque)
{
    ER_OBJECT *object;
    uint8 result = ER_BAD_ARGUMENT;
    if (deque != NULL)
    {
        result = de_remove_first(deque, (void **)&object);
    }
    return result;
}
鉴于该函数de_remove_first()还检查deque参数以查看它是否为 NULL,在 中再次检查它是否被认为是好的形式er_remove()?
从功能的角度来看,签到er_remove()显然是没有必要的。然而,它确实让读者清楚地看到deque参数被检查,并且它还消除了对de_remove_first()在未来代码修订中保留的检查的依赖。
有什么想法吗?