尽量使用功能好吗?

Joh*_*der 15 c linux function

当我阅读开源代码(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)

一个功能?这会有帮助吗?

  • 由于函数中的变量被破坏而导致源效率(?)(除非动态分配完成)

如果源是合理的(例如,你没有重复使用变量名称超过它们的实际上下文),那么它应该无关紧要.编译器应该确切地知道值使用停止的位置以及可以忽略/销毁的位置.

  • 嵌套函数会减慢代码流吗?

在某些情况下,地址混叠无法正确确定.但在大多数计划中,这在实践中并不重要.当它开始变得重要时,您可能会使用分析器浏览您的应用程序并发现有问题的热点.

现在,编译器在内联函数方面相当不错.你可以信任他们至少做一个不错的工作,摆脱所有调用开销与功能长度本身相当的情况.(以及许多其他情况)

  • 不应该是`some_variable | = 1 << bit_position;`? (4认同)
  • 添加您关于性能分析的评论:当程序正确分解为函数时,这也会变得非常容易. (2认同)
  • 当您具有执行离散任务的小功能时,它还使单元测试成为可能/更容易,并且通常更容易验证代码.验证一个小函数做一件事比验证一个大函数做200件事更容易,更可靠. (2认同)