1.4b为什么使用函数,如何高效地使用函数

目前为止,我们已经了解到了什么是函数以及函数的基本功能,下面我们再来探讨一下为什么要使用函数。

为什么要使用函数?

刚开始学习编程的时候,常会有人问,“不能把函数里的代码直接放在main()里吗?何必要写得这么麻烦呢?”,在程序非常简单的情况下,这么做确实无可厚非。但是,函数提供了一系列的好处,使得它们在复杂的程序中变得十分有用,所以我们希望你能够在一开始就能养成写函数的好习惯。

  • 有组织——随着程序越来越庞大,把所有的函数放在main()中会使它变得越来越复杂,一个函数就像一个小程序,可以独立于main()之外,让我们能够专注于眼前的这部分而无须考虑其他,这可以让复杂的任务模块化、简单化,从而也大大地降低了程序的复杂性。
  • 可重用——函数写完后,就可以被多次调用,从而避免代码的重复以及复制/粘贴导致程序错误的概率。函数还可以与其他程序共用,如果其他程序需要用到同样的功能,可以直接再次使用这个函数,而无须每次都要重新编写和测试,从而减少了代码量。
  • 易测试——因为函数可以减少代码冗余,所以也减少了测试的代码量。又因为函数是独立的,所以一旦测试完一个函数并确定其正确性。就无需重复测试,除非对其进行了更改。这些使得我们可以更容易避免bug,更容易找出bug。
  • 可拓展——如果我们的程序需要拓展已实现新功能,函数就可以在不对主体代码进行大的改动的情况下帮助我们完成目标。
  • 抽象化——使用一个函数,我们只需要知道它的名称、输入输出以及所在的名称空间,而无须知道它是如何工作的以及依赖于其他什么代码,这可以使他人的代码变得可访问(比如标准库中的一切)。

可能你还没有意识到,每次你使用std::cin、std::cout进行输入输出时,就已经调用了标准库中符合上述所有规范的函数。

高效地使用函数

新手除了基本语言外遇到的最大挑战之一就是何时、如何使用函数,以下是写函数的一些基本准则:

  • 在程序中出现一次以上的代码通常都需要写成函数,比如,如果我们以同样的方式多次从用户处获取输入或者以同样的方式多次进行输出,就很有必要把这段代码包装成函数。
  • 如果程序有一组离散的输入输出,就很适合写成函数,特别是当它比较复杂时。例如,我们有一个需要排序的项目列表,做排序的代码可以写成一个很好的函数,即使只做一次。输入是待排序的列表,输出则是排序后的列表。
  • 一个函数通常仅执行一个任务。
  • 如果一个函数太长、太复杂、太难以理解,就需要分解成一个个小函数,这称为代码重构

通常,学习C++的时候,你的很多程序都会涉及以下三个任务:

  • 读取用户输入
  • 进行计算
  • 打印计算值

对于一些小程序(小于20行的代码),或许一些或者全部都可以写在main()中,但对于更长的程序,一个独立的函数都应当成为候选项。

初学时,常有人把计算数值与打印结果放在一个函数中,但这违反了“一个任务”的原则,函数要做的应当是返回计算结果,然后让调用函数决定如何处理返回值(比如打印)

我们将在《1.10a如何设计你》的第一个程序详细探讨这个话题。

转载请参看关于博客页面相关要求。

关于 “1.4b为什么使用函数,如何高效地使用函数” 的 1 个意见

评论关闭。