在日常的一些代码中,常常会出现需要进行一系列的初始化和释放操作的情况,而在每次的初始化之后一般都要判断指针是否为空、内存分配是否失败等情况,如果失败的话就要返回,就像下面这个函数一样:
如果过程中初始化和释放的步骤较多,代码就会显得比较臃肿,而且由于return语句较多,也不是一种很好的风格,因为一般来讲,我们还是喜欢单入口和单出口的函数,这样显得可读性会更好。
有没有更好的写法呢?前几天我的一个同事提出了一种不错的解决方案,通过定义一系列的宏来解决这个问题,我看了一下,觉得很不错,于是又在这个方法之上进行了一些扩展。比如,如果我们希望对指针类型的返回值进行一系列的检查,可以进行如下的定义:
这样,我们最初的代码就可以写成这样:
看看,是不是顺眼了很多?我们同样可以针对BOOL等类型的返回值写出类似的宏。