在编程中,大家会遇到这种情况,连续好多个判断条件,如果条件成立,就继续往下操作,如果不成立,就马上退出。但这样会造成2种情况:
(1)if语句的重复嵌套,导致代码不停地缩进(不是很美观,代码又很长)。
(2)需要在不满足条件是加上return语句,马上返回,这样导致有多少if语句就有多少return语句,
代码也很长
我现在想出这么一种方法,用BOOL(宏定义,为0和1)类型来解决。
一个例子:
BOOL GetData(char * lpszFileName)
{
LONG hf;
BOOL bResult;
char szSender[12];
char szReceiver[12];
bResult = (-1 != (hf == open(lpszFileName, "r", O_BINARY | 0_RDONLY))); //(1)
bResult = bResult && (12 = read(hf, szSender, 12)); //(2)
bResult = bResult && (12 = read(hf, szReceiver, 12)); //(3)
//下边可能还有好多if语句
if (-! != hf)
{
close(hf);
}
return bResult;
}
在(1)行中,如果文件打开失败,并没有来立即退出,而是继续执行(2),因为有bResult这个条件在,会保证如果上一步正确,程序会继续执行下一步操作。这样会避免上面提到的问题,但是可能会导致执行效率低些,可是代码缩紧这个问题可以解决了。