就编码风格而言,以下两种实现中哪一种更好,为什么?
UINT Fn1()
{
HKEY hRegKey;
if(RegOpenKeyEx(..., KEY_NAME, &hRegKey) != ERROR_SUCCESS)
return ERROR_KEY_OPEN;
if(RegQueryValueEx(hRegKey, VAL_A_NAME, ...) != ERROR_SUCCESS)
{
RegCloseKey(hRegKey);
return ERROR_KEYVAL_A;
}
if(RegQueryValueEx(hRegKey, VAL_B_NAME, ...) != ERROR_SUCCESS)
{
RegCloseKey(hRegKey);
return ERROR_KEYVAL_B;
}
RegCloseKey(hRegKey);
return ERROR_SUCCESS;
}
UINT Fn2()
{
UINT rVal;
HKEY hRegKey;
if(RegOpenKeyEx(..., KEY_NAME, &hRegKey) == ERROR_SUCCESS)
{
if(RegQueryValueEx(hRegKey, VALUE_A_NAME, ...) == ERROR_SUCCESS)
{
if(RegQueryValueEx(hRegKey, VALUE_B_NAME, ...) == ERROR_SUCCESS)
rVal = ERROR_SUCCESS;
else
rVal = ERROR_KEYVAL_B;
}
else
rVal = ERROR_KEYVAL_A;
RegCloseKey(hRegKey);
}
else
rVal = ERROR_KEY_OPEN;
return rVal;
}
另外,还有更好的方法吗?
注意:请不要混淆片段的细节 - 强调代码流和样式。