更多与更少功能

yod*_*die 2 c++ function preferences

我有一点争论,想知道那里的人们在想什么:

在C++(或一般)中,您是否更喜欢将代码分解为许多较短的函数,main()仅包含函数列表,按逻辑顺序,或者您是否仅在必要时更喜欢函数(即,它们何时会被重复使用很多次)?或者介于两者之间?

Dig*_*oss 13

请小功能

传统观念认为较小的功能更好,我认为这是真的.事实上,有一家公司有一个分析工具,根据他们做出的决策与他们所拥有的单元测试数量相比,对各个功能进行评级.

理论是您可能会或可能不会降低整个应用程序的复杂性,但您可以完全控制任何给定函数的复杂程度.

一种称为圈复杂度的测量被认为与不良代码正相关...具体而言,通过一种方法存在的路径越多,其CCN数越高,写入越差,理解越难以及因此改变或甚至是正确的开始,它将需要更多的单元测试.

好的,找到了工具.它被称为,ahem,C hange R isk A nalysis and P redictions index.

最近,只有一次编码信息的原则已经成长为新的缩略词,特别是DRY(不要重复自己)和DIE(复制是邪恶的) ......我相信我们可以部分地感谢RoR社区推广这一理念......


Vad*_*ath 5

拆分功能,但永远不要拆分功能。

功能可以分为层,然后每一层可以拆分成不同的功能。例如,当我们处理一个正弦序列时,求和和减法的主循环应该在主函数中。这可以被视为第 1 层。现在寻找功率的功能可以归入第 2 层。这可以作为子功能来实现。同样,查找阶乘也属于第 2 层,这将是另一个子函数。始终考虑功能,从不计算行数。行数可能从 3 到 300 不等,没关系。这将为我们的代码增加更多的可读性和可维护性。这是我关于拆分的想法。