所以,这又是一个关于“好”的编程实践问题。我确实搜索了一下,但是像这样的问题往往很难用几个词来定义。
对于这个问题:从专业角度来看,是将代码保持简洁而短小(不一定更高效),还是显式地定义实例变量仅为了分配它们并立即返回更好的编程实践? 例如:
FILE * foo(){
FILE * retVal;
foo2();
retVal = foobar();
return retVal;
}
从上面可以立即看出,foobar
返回一个FILE *
。因此,从这种编程风格中我们可以更快地提取重要信息。与以下内容相比,这是真实的:
FILE * foo(){
foo2();
return foobar();
}
当然,这两种方式都能达到同样的效果。然而,要找到相同的信息,必须深入研究。我倾向于后一种编程风格,仅仅因为它看起来更好。由于程序运行的本质,我怀疑使用任何一种方式都不会立即获得性能提升,因为内存对于任何一种选择都是必要的 - 差别在于用户或编译器是否分配它。
另一个将代码保持简洁的例子:
int foo(){
int i = 0;
while(foobar())
i++:
return i;
}
TL:DR问题 >> 显示正在执行的内容是否更好,还是为了简洁和简明起见缩短完成相同任务但不一定提供性能增益的代码?
在编写代码时,我们需要找到平衡点。即使代码可以缩短,也应该尽量明确地展示代码的意图,以提高可读性和可维护性。因此,在代码中显示正在执行的内容更好。
-O2
,gcc为这两个foo()
函数生成完全相同的代码。一般来说,我更喜欢前者的风格,但在短小精悍的代码中,我会使用后者,例如:int XY_public_API(int x, inty) { return xy_private_api(x, y); }
。因此,哪种风格更好取决于具体用例。与任何“编码风格”一样,没有通用的建议。 - P.P