我正在使用gcc 4.7.0,在c89模式下。
我有这个如果-其他声明,并有两个问题。
非常感谢您的建议。
if(event->status == FALSE) {
g_release_call_test(module, channel_id);
}
else if(event->status == TRUE) {
if(UNIT_TEST & KARAOKE) {
if(g_record_karaoke(module, channel_id) == FALSE) {
g_release_call_test(module, channel_id);
}
}
else if(UNIT_TEST & RECORD) {
if(g_record_file_test(module, channel_id) == FALSE) {
g_release_call_test(module, channel_id);
}
}
else if(UNIT_TEST & GET_DIGITS) {
if(g_collect_digits_test(module, channel_id) == FALSE) {
g_release_call_test(module, channel_id);
}
}
}发布于 2012-09-05 05:00:32
1)我只是想知道我是否应该先测试假的或真实的条件。正常情况下什么更好。我知道这没什么区别,但我只是想知道其他工程师是做什么的?在下面的示例中,我首先检查是否为FALSE。
从语法上讲,这并没有多大的区别,明智的编程在一般情况下并不重要。然而,对于特定的用途而言,它会影响性能。让我们考虑一个例子,如果您正在播放一个媒体文件,并且这个条件是检查它是一个媒体帧还是一个头。在这里,您知道您将有100多个媒体帧在一个标题之后,因此您需要检查媒体帧,然后是标题。由于检查头将意味着100个冗余检查,== 100冗余CPU指令可能更多。根据您的使用情况编写代码总是更好,除非您正在编写一个通用的东西。
2)我总是喜欢做一些防御性的编程。所以,如果我能明确地检查每一个条件,我总是这样做的。例如,不要做if() - else。如果()-否则如果(),我会这么做。在下面的示例中,条件可以是TRUE,也可以是FALSE。然而,我总是喜欢检查其他条件,以确保它是真实的。这有什么意义吗?
防御性编程有自己的利弊。在上述场景中,编译器将为您进行必要的优化。
你可能想看看这里,http://www.eventhelix.com/realtimemantra/basics/optimizingcandcppcode.htm#
干杯..。快乐学习
https://stackoverflow.com/questions/12274601
复制相似问题