屏幕尺寸常数是否应该重构魔术数字?

时间:2009-12-13 04:56:14

标签: c++ constants magic-numbers

我的代码中有一些特定的位置,我使用特定的像素尺寸将某些内容显示在屏幕上。显然,这些都被放置在命名良好的常量中,但我担心它仍然有点模糊。

示例:这是一个小函数的局部范围,所以我希望很明显,常量的名称适用于方法名称所指的内容。

const int X_COORD = 430.0;
const int Y_COORD = 458.0;

ApplySurface( X_COORD, Y_COORD, .... );
...

屏幕上的位置专门针对该位置计算。我几乎觉得我应该制作一些说SCREEN_BOTTOM_RIGHT的常量,所以我可以像const int X_COORD = SCREEN_BOTTOM_RIGHT - SOME_OTHER_NAME那样做。

上面的代码是不是太模糊了?或者作为开发人员,你会看到并且说,好吧,那就是屏幕上的那个(430,458)。明白了。

2 个答案:

答案 0 :(得分:2)

取决于。这些常数有什么特别的原因吗? (例如,“430”实际上是其他元素左边200像素吗?)

如果是这样,那么根据用于其他元素的常量(或任何原因导致该数字)来表达它可能更有意义。

如果它们都只是任意位置,那么将它们表示为坐标是有道理的。但机会是,它们实际上并不是武断的。

答案 1 :(得分:0)

你认为我有什么尺寸的屏幕?人们的机器屏幕分辨率差别很大,任何固定的像素大小或位置在某些时候对某些人来说都是错误的。我的正常显示是1900x1220;我的另一个显示是1440x1050;其他人使用不同大小的屏幕。如果您正在显示用户无法调整大小的固定大小窗口,则使用固定大小可能更安全。

在不知道ApplySurface()的作用的情况下,很难说它是否清楚如写。但是,相对的名字可能是明智的。作为一名维护程序员,我不知道在没有支持性评论的情况下,值430和458的来源是什么,除非您使用表达式来表明它。