Во всех мануалах громко и нецензурно кричат о том, что надо писать строго одну точку выхода из функции в самом ее конце, мол так надежнее - все unlock'и в одном месте, нельзя напортачить с забытым разлоком и проч.
А скажите, господа, а как предполагается тогда писать такие функции? Через миллионы вложенных if'ов? А как это поможет читабельности и надежности?
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
Собственно код, на котором мне бомбануло:
static YGGBool compare_records_str(CML_Node * haystack1, CML_Node * haystack2, char * needle)
{
CML_Node * finder1;
CML_Node * finder2;
if (CML_NodeFindString(haystack1, needle, &finder1)) return YGG_FALSE;
if (CML_NodeFindString(haystack2, needle, &finder2)) return YGG_FALSE;
if (!finder1->data.string) return YGG_FALSE;
if (!finder2->data.string) return YGG_FALSE;
if (strcmp(finder1->data.string, finder2->data.string)) return YGG_FALSE;
return YGG_TRUE;
}