[問卦] 禁用 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