C 参数限制的最佳位置是在函数内部还是外部?

C 参数限制的最佳位置是在函数内部还是外部?,c,C,选项1:在功能中 int funcA(int a){ if(a < 0){ return -1; } else{ ... return 0; } } int funcA(int a){ if(a /代码>,它高度依赖于函数的作用以及它是如何被期望使用的。 < P>没有关于什么是更好的硬和快的规则——基本上有两个你想考虑的情况。 如果约束对于函数的这种特定用法是唯一的,那么最好将它们放在函数之外,让函数更一般化

选项1:在功能中

int funcA(int a){
    if(a < 0){
        return -1;
    }
    else{
        ...
        return 0;
    }
}
int funcA(int a){
if(a<0){
返回-1;
}
否则{
...
返回0;
}
}
选项2:主要

int main(){
    int a;
    ...
    if(a < 0){
        ...
    }
    else{
        funcA(a);
    }
}
intmain(){
INTA;
...
if(a<0){
...
}
否则{
funcA(a);
}
}
选择3:两个地方?如果您有一些建议,我将不胜感激。

调用者有责任确保它使用有效参数调用函数-根据文档

调用函数的目的是在可能的情况下防止无效值,并且根据文档的要求再次进行


没有一个合同(文档)没有固有的“正确的”或“错误的”选择,对于代码< >函数> /代码>,它高度依赖于函数的作用以及它是如何被期望使用的。

< P>没有关于什么是更好的硬和快的规则——基本上有两个你想考虑的情况。 如果约束对于函数的这种特定用法是唯一的,那么最好将它们放在函数之外,让函数更一般化,并且只限制对它的这种特定调用


如果约束是函数的一部分,并且在调用函数时总是需要约束,那么最好将约束放在函数中,这样就不必在调用函数的每个地方重复约束。

没有wrt“函数编程”这里。这并不能真正给编写函数的人提供建议——很明显,你可以说一切都是“按照文档”进行的,但是如果你是编写文档的人,你需要对函数内部和外部发生的情况进行调用。@sphanley要得到的建议是定义一个契约(基于what和how),在文档中指定它,并确保调用者和被调用者都遵守它。对于什么是可接受的/例外的行为,没有规则就没有“更好的”了。