通常,我定义真正的全局常量(比如说 pi)的方法是将 extern const 放置在头文件中,并在 .cpp 文件中定义该常量:
常量.h:
extern const pi;
常量.cpp:
#include "constants.h"
#include <cmath>
const pi=std::acos(-1.0);
这对于 pi 等真实常量非常有效。但是,我正在寻找定义“常量”的最佳实践,因为它将在程序运行到程序运行之间保持不变,但可能会根据输入文件而变化。重力常数就是一个例子,它取决于所使用的单位。 g 在输入文件中定义,我希望它是任何对象都可以使用的全局值。我一直听说拥有非常量全局变量是不好的做法,所以目前我将 g 存储在系统对象中,然后将其传递给它生成的所有对象。然而,随着对象数量的增加,这似乎有点笨重且难以维护。
想法?
这完全取决于您的应用程序大小。如果您确实绝对确定某个特定常量将具有由代码中的所有线程和分支在一次运行中共享的单个值,并且将来不太可能改变,那么全局变量最接近地匹配预期语义,所以最好只使用它。如果需要的话,稍后重构也是微不足道的,特别是当您为全局变量使用独特的前缀时(例如g_
)这样他们就不会与当地人发生冲突——总的来说,这是一个好主意。
总的来说,我更喜欢坚持 YAGNI,而不是试图盲目地安抚各种编码风格指南。相反,我首先查看他们的基本原理是否适用于特定情况(如果编码风格指南没有基本原理,那么它就是一个糟糕的指南),如果显然不适用,那么就没有理由应用该指南对于那种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)