[问卦] 禁用 goto,goto 难道错了吗?

楼主: zero00072 (赤迷迭)   2021-09-22 20:29:45
各位年薪百万的大家好啊。
厚~!教授禁用 goto,有道理吗?goto 这么好用的说。
像是以下的程式码:
int main() {
System *system_list = NULL;
do {
system_list = system_init();
if (system_list) {
if (system_list->ts != 0)
break;
} else
break;
system_ts_update(system_list);
sd_journal_print(LOG_INFO, "Timestamp: %ld", system_list->ts);
} while (0);
if (!system_list)
system_free(system_list);
return 0;
}
竟然用单次循环作 break 来假跳跃,循环都不循环了,牙给耶。
改成:
int main() {
System *system_list = system_init();
if (system_list) {
if (system_list->ts != 0)
goto out_free_system_list;
} else
goto out;
system_ts_update(system_list);
sd_journal_print(LOG_INFO, "Timestamp: %ld", system_list->ts);
out_free_system_list:
system_free(system_list);
out:
return 0;
}
是不是很直觉?要 goto 哪就 goto 哪,苏湖~!
有没有用 goto 罪无可赦的八卦啊?

Links booklink

Contact Us: admin [ a t ] ucptt.com