【发布时间】:2014-07-31 18:57:12
【问题描述】:
我有一个整数指针作为默认函数参数。如果它不为空,我想分配一些值,也许每 200 行中的第 10 行。通过在每次分配之前进行标准检查,我的代码很容易变得庞大且难以阅读。 (我指的是源文件长度和可读性,而不是二进制大小。)
替换这个是好习惯吗:
// Previous statement
// Use to put empty line here
if(ptr)
*ptr = val;
// Empty line also here
// Next statement
用这个:
// Previous statement
assignIfNotNull(ptr, val);
// Next statement
并把 if 放入函数中?
inline void assignIfNotNull(int *ptr, int val)
{
if(ptr)
*ptr = val;
}
现在,我似乎很细致,但这每次使用会节省 3 行。也许不是我编程风格中最糟糕的事情,这是我独自学习时即兴创作的。我想压制它,询问并跟上标准。 (我在任何地方都找不到这个。)
提前致谢。
【问题讨论】:
-
第二版错误。您正在通过值传递指针,您需要一个双指针或通过引用传递指针。
-
@40two 赋值为 *ptr = ...,没关系
-
@DieterLücking 道歉没有注意到 :( 请忽略我的评论 Dieter 是对的。
-
我个人不会这样做,因为 API 不会得到太多使用。我宁愿编写更严格的代码,当我输入一段我知道指针应该有效的代码时跳过任何检查,而不是使用 API 来设置不断进行不必要检查的值。
-
如果不支持某些编辑工具,assignIfNotNull 需要比 if 版本更多的输入。除此之外,它是一个纯粹的便利功能。即使有一个好名字,你也必须在使用它之前查找(知道)函数(我不会这样做,除非它在某些源文件中本地使用)