在哪里放置常量数组

Where to put a constant array?

本文关键字:数组 常量 在哪里      更新时间:2023-10-16

我正在编写一个函数,该函数具有多个具有许多数值的常量数组。这些数组包含多项式方程的系数,并且不会更改。现在,我在同一个函数(.cpp File)中定义了数组,例如:

    double coefficients[7] = {
        271.155123745294,
        -2.03521046106355,
        8.79645207223641E-03,
        -1.38958348112727E-05,
        -2.048607610462E-08,
        9.372391616E-11,
        -8.397701E-14
    };

看看我的代码,我对代码的"外观"不是很满意,并问自己是否有更好的解决方案(例如,将一堆常量值放在单独的文件或标头中)。这不是一个真正的问题,但在我看来,读者会从算法中分心。

您可以将

常量放在它们自己的文件中,并将它们#include到您需要的地方 - 这不是问题。

顺便说一句,你常量,但在你的例子中你的数组不是const - 但如果你不打算改变它,它可能是。

你可以

  • 将数组常量与函数一起放在命名空间中(匿名命名空间可能就足够了),

  • 将它们作为static常量与函数一起放在全局命名空间中(注意:不推荐使用static 来表示数据)

  • 将它们放在单独的访问器函数中,可以static

顺便说一下,一定要添加const.

这也通知编译器它们是常量。

除了上面的答案之外,还有一件事:把它放在配置文件中。只有在编译时不需要它时才能执行此操作,但随后可以更新常量而无需重新编译/重新分配代码。它仍然可以是一个 const,因为您可以在静态初始化期间读取和解析配置文件。

您应该为

双变量coefficients使用const类型限定符。

查看我的代码,我对代码的"外观"不是很满意

是的,你是对的。它看起来不太好,有更好的方法可以做到这一点。

如果对变量使用修饰符并将其置于函数定义之外,则可以获得更好的可读性static。或者,您可以在将要访问它的函数定义正上方.cpp文件中将其全局化。

是的,separate accessor functions(使其static)也是一个好主意,如其中一个答案所述。

您也可以尝试 X 宏,如果它有助于解决代码可读性问题。