这只是一个一般性的帮助问题,我试图了解在C ++应用程序的代码中使用一组小函数而不是只有一个包含解决问题所需的所有语句的长复杂函数有什么好处? / p>
答案 0 :(得分:20)
编辑此助记符的信用将转到OP中的评论者。
将大功能分解为几个较小的功能可以导致 MURDER !在这种情况下,这可能是一件好事。 :)
M - 可维护性。更小,更简单的功能更易于维护。
U - 可理解性。更简单的功能更容易理解。
R - 可重用性。通过将常用操作移动到单独的函数来鼓励代码重用。
D - 可调试性。调试简单函数比复杂函数更容易。
E - 可扩展性。代码重用和可维护性导致在6个月内更容易重构的功能。
R - 回归。重用和模块化可以带来更有效的回归测试。
将大型功能分解为更小的功能有一些潜在的好处。他们按顺序从脑中掉了出来:
它鼓励代码重用。通常在大型功能中,您必须多次或多或少地执行相同的操作。通过将其概括为单个通用函数,您可以在多个位置使用该一个代码块。
通过将潜在的错误隔离到一个地方而不是几个地方,代码重用可以帮助提高稳健性和可维护性。
当代码行数较少且对命名良好的函数进行大量调用时,更容易理解函数的语义。
如果您反对具有多个返回点的函数,那么打破大函数可以帮助减少它们。
它有助于识别和隔离(潜在的)细微数据依赖性问题,否则很难注意到这些问题。
重要的是要注意,你要善于处理坏事。打破大功能还有一些潜在的缺点:
如果之前的大功能有效,试图模块化可能会产生缺陷。
在多线程应用程序中,如果您的同步策略很微妙或只是完全错误,您可能会引入死锁和竞争条件。
您可以通过函数调用引入性能命中。
答案 1 :(得分:3)
更清晰的代码,这意味着它更容易理解和维护。
答案 2 :(得分:0)
一个重要的复杂功能就是:复杂。
将代码划分为单独的函数可使代码更易于使用。首先,当您查找执行特定任务的代码部分时,将更容易找到它是否属于自己的函数。
其次,对函数进行更改非常简单 - 您不需要了解大量代码来修改该函数。
此外,您可能会发现在将该代码划分为较小的函数时,可以更轻松地在另一个项目中重用该代码,这些函数可能比单个大函数可能用于更多目的。
答案 3 :(得分:0)
将程序拆分为多个功能的优点是:
答案 4 :(得分:0)
在医疗设备系统中,将代码分解成更小的部分减少了回归测试的需要,并将更改的影响缩小到更小的范围。
例如,假设我们在一个文件中有3个主题的15个函数。
如果我更改了文件中的某个功能,则需要重建所有内容并重新测试。
如果我将文件分成3个独立的文件,每个文件包含5个函数,我只需要重建5个函数并重新测试5个函数。测试5个功能所需的测试时间少于15个功能。
此外,当团队中的人员使用相同的代码库时,划分代码会降低两个或更多人处理同一文件的可能性。处理同一文件的多个人有许多冲突,例如在办理登机手续时意外删除了一个人的代码。