通过参数返回值是一个好的设计吗?

azt*_*ack 22 c++ api

bool is_something_ok(int param,SomeStruct* p)
{
    bool is_ok = false;

    // check if is_ok

    if(is_ok)
       // set p to some valid value
    else
       // set p to NULL
    return is_ok;
}
Run Code Online (Sandbox Code Playgroud)

如果"something is ok",则此函数返回true并将p设置为有效值,否则返回false并将p设置为NULL

这是一个好的或坏的设计?就个人而言,当我使用它时,我感到不舒服.如果没有文件和评论,我真的不知道如何使用它.

顺便说一下:有没有关于API设计的权威书籍/文章?

tux*_*21b 13

由于您已将问题标记为C++而非C,我建议您:

  • 直接返回值
  • 如果您有多个值,请使用输出参数
  • 尽可能使用非const引用作为输出参数(而不是指针),并对输入参数使用const-references.
  • 如果出现问题,则引发异常而不是返回false或-1.

但这只是一些一般性提示.最好的方法取决于具体问题......