当我阅读开源代码(Linux C代码)时,我看到很多函数被用来代替执行所有操作main(),例如:
int main(void ){
function1();
return 0;
}
void function() {
// do something
function2();
}
void function2(){
function3();
//do something
function4();
}
void function3(){
//do something
}
void function4(){
//do something
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我尽可能多地使用函数的优点和缺点吗?
vir*_*tor 11
绝对 - 也很容易看出操作的上下文在哪里开始/结束.这种方式比源中的某些任意范围的线要容易得多.
你可以过头了.有些情况下,有一个功能或不拥有它不会在行数上产生差异,但在可读性方面也是如此 - 并且它取决于一个人是否是正面的.
例如,如果你做了很多set-bit操作,你会做出:
some_variable = some_variable | (1 << bit_position)
Run Code Online (Sandbox Code Playgroud)
一个功能?这会有帮助吗?
如果源是合理的(例如,你没有重复使用变量名称超过它们的实际上下文),那么它应该无关紧要.编译器应该确切地知道值使用停止的位置以及可以忽略/销毁的位置.
在某些情况下,地址混叠无法正确确定.但在大多数计划中,这在实践中并不重要.当它开始变得重要时,您可能会使用分析器浏览您的应用程序并发现有问题的热点.
现在,编译器在内联函数方面相当不错.你可以信任他们至少做一个不错的工作,摆脱所有调用开销与功能长度本身相当的情况.(以及许多其他情况)