章节目录

为什么需要函数

本节阅读量:

介绍完什么是函数及其基本功能,这节仔细讲解函数为什么有用。


为什么使用函数?

新手经常会问,“不能把所有代码都放在main函数中吗?”对于简单的程序绝对是可以的。然而,函数有许多好处,在超长或超复杂的程序中非常有用。

  1. 可组织性——随着程序功能增加,所有代码都放在main()中会变得越来越复杂。函数像一个迷你程序,能独立于主程序编写,不必在编写时考虑程序的其余部分。将复杂的程序简化为更小、更易于管理的模块,降低程序管理的整体复杂性。

  2. 可重用性——一旦编写了函数,可以在程序中多次调用。避免了重复代码,并将复制/粘贴错误的概率降至最低。函数也可以与其他程序共享,减少每次从头编写(并重新测试)的代码量。

  3. 测试——函数减少了代码冗余,所以要测试的代码更少。此外,因为函数是自包含的,一旦测试了函数以确保其工作,就不需要再次测试它,除非有更改。减少了测试的代码量,从而更容易发现错误(或首先避免错误)。

  4. 可扩展性——当需要扩展程序来处理以前没有处理的情况时,函数在一处更改,并在每次调用时生效。

  5. 抽象——使用函数,只需要知道它的名称、输入、输出以及所在位置。无需了解如何工作,也无需知道使用它所依赖的其他代码。降低了使用他人代码(包括标准库)所需的知识量。


有效的使用函数

新手遇到的最大挑战之一(除了学习语言)是理解何时以及如何有效使用函数。下面是编写函数的一些基本准则:

  1. 程序中出现多次的语句组通常应编写成函数。例如,如果以相同方式多次读取用户的输入,组织成函数是很好的解决方法。如果在多个位置以相同的方式输出内容,也可编写成函数。
  2. 具有一组定义的输入和输出代码(特别是很复杂时)。例如,如果有一个要排序的列表,那么执行排序的代码是一个很好的函数,即使只被使用一次。输入是未排序的列表,输出是已排序的列表。另一个可组织成函数的功能是模拟六边形骰子投掷结果。当前程序可能只使用一次,但如果将其转换为函数,则在以后扩展程序或在未来的其它程序中重用。
  3. 函数通常应执行一个(且只能执行一个)任务。
  4. 当函数变得太长、太复杂或难以理解时,可将其划分为多个子函数。称为重构。

通常,学习C++时,将编写许多多个子任务的程序:

对于琐碎的程序(例如,少于20行代码),其中一些或全部可以在函数main中完成。然而,对于较长的程序,单个函数更好。

新手通常将计算值和打印计算值结合到单个函数中。然而,这违反了函数的“一个任务”经验法则。计算值的函数将值返回给调用方,并让调用方决定如何处理结果(比如调用另一个函数打印值)。


2.4 局部变量

上一节

2.6 前向声明

下一节