我的程序是用C语言编写的Linux,并且有许多函数,它们具有不同的返回值模式:
1)一次或两次n
成功和-1
失败的回报.
2)一些0
成功和-1
失败的回报.
3)成功时返回1,失败时返回0(我通常使用布尔类型).
4)指针返回0
失败(我通常使用spurn NULL
).
我的混乱出现在前三个 - 返回指针的函数总是0
在失败时返回,这很容易.
第一个选项通常涉及返回长度的函数,该长度可能只是正数.
第二个选项通常涉及命令行处理函数,但我不确定它是否正确,或许更好的值是EXIT_SUCCESS和EXIT_FAILURE?
第三个选项适用于在条件内调用方便且自然的函数,我通常使用int
值1和0 来模拟布尔类型.
尽管这一切似乎相当明智的,我仍然觉得哪里的区域,这是不太清楚或明显为当我创建的功能,或风格是在使用时,我想用它来使用的风格.
那么在决定返回类型时,如何为我的方法增加清晰度呢?
那么,在这里确定返回类型时,如何增加方法的清晰度?
为每种退货类型选择一种模式并坚持下去,否则您会发疯。根据已经为平台建立的约定对模式进行建模:
如果要进行大量系统调用,则任何返回整数的函数都应-1
在失败时返回。
如果不进行系统调用,则可以随意遵循C控制结构的约定,即非零表示成功,零表示失败。(我不知道你为什么不喜欢bool
。)
如果函数返回指针,则应通过返回来指示失败NULL
。
如果函数返回浮点数,则应通过返回NaN来指示失败。
如果函数返回完整的有符号和无符号整数范围,则可能不应在返回值中编码成功或失败。
测试返回值对C程序员是一个祸根。如果失败很少发生,并且您可以编写中央处理程序,请考虑使用可以指示失败的异常宏包longjmp
。