如何正确命名一个表示值为 1 - n 的变量?

How to correctly name a variable which represents a value of 1 - n?

提问人:Trap 提问时间:10/11/2008 最后编辑:Trap 更新时间:2/10/2010 访问量:541

问:

这显然取决于您在使用它们的上下文中,但是,我想知道是否有一种普遍接受的方法来命名这些变量,或者至少在数学上下文中。

我经常看到:

float k         = someValue;
float oneMinusK = 1 - k;

...这对我来说既是描述性的,又是毫无意义的。

请注意,我不是在问如何命名变量,而是在这种情况下如何命名。您使用它们的例子和上下文将不胜感激,

谢谢。

变量 命名

评论


答:

9赞 Scott James 10/11/2008 #1

你应该根据它对你正在处理的领域的含义来命名你的变量,而不是你用来生成它的算法。因此,如果 k 代表您的门牌号,则 k-1 可能代表您隔壁邻居的门牌号。相应地命名它。

评论

0赞 Rob Wells 10/11/2008
但是,如果这是一个较长流程中的中间步骤,并且没有合适的域表示形式,该怎么办?
0赞 Mitch Wheat 10/11/2008
好点子!我想只要变量的范围很短,并且有助于清晰,那么命名为 oneMinusK 是合理的。
0赞 Rob Wells 10/11/2008
是的。这就是我当时的想法,特别是如果你想看一个大计算中的中间点。但是,正如您正确指出的那样,如果变量在域内具有表示,则使用它而不是其数值属性的一些深奥表达式。(-:
0赞 S.Lott 10/11/2008
反对。寻找意义。它必须在那里。如果它晦涩难懂,这可能意味着要进行一些挖掘才能理解小范围的中间结果。
0赞 Scott James 10/13/2008
如果在较长的进程中有一个中间步骤,则该进程将成为域。如果是这种情况,我认为 --POTENTIALLY-- nMinusOne 是给定域的公平名称。似乎很明显,作者的意图是概率倾斜,所以答案是没有意义的:-)
14赞 Vinko Vrsalovic 10/11/2008 #2

在概率中,1-k 是 X 不发生的概率,假设 k 是 X 发生的概率。

所以

float will_win_lottery = 0.00000000001;
float will_not_win_lottery = 1 - will_win_lottery;
-2赞 moo 10/11/2008 #3

这真的重要吗?使用 i;它的描述性并不比 K 少。如果你对代码描述性有强迫症,那么像这样的事情需要被记录/评论。

7赞 Dan Dyer 10/11/2008 #4

我称之为补充

评论

0赞 Ande Turner 10/11/2008
我认为补语更准确地描述了(0 - n)。
1赞 Dan Dyer 10/11/2008
在概率中 1 - n 是补码,所以我想这取决于域。
2赞 Bill the Lizard 10/11/2008 #5

当我需要它时,我可能会计算它。您认为将其存储在变量中可以节省多少时间?请记住,过早的优化是万恶之源。

评论

0赞 Trap 10/11/2008
很好,但是在写一个关键部分时,我突然想到了这个问题,其中速度确实很重要。
0赞 Bill the Lizard 10/11/2008
然后,我将使用 oneMinusK,并记录该变量用于声明它的优化。此外,请确保在有和没有变量的情况下对其进行测量,以确保它确实为您节省了一些东西。
0赞 Kristopher Johnson 10/11/2008
我可能会给值一个名称,而不考虑任何性能问题。这取决于代码是否更易于理解,无论是否带有符号名称。
0赞 Michael Easter 10/11/2008
+1 至 KJ。命名计算通常是为读者命名的;我不认为这是一种优化
0赞 Bill the Lizard 10/12/2008
我认为最初问题的重点是很难想出比 1 - k 更好的名字。
0赞 Ande Turner 10/11/2008 #6

这些应该是常量吗?

如果你这样做完全是出于易读性的原因,为什么不创建一个 la Dan 建议的方法。

float complement(float n) { return (1.0 - n); }
0赞 Turnkey 10/11/2008 #7

您的用法似乎已经足够具有描述性,请顺其自然。

1赞 Hannes Landeholm #8

如果不知道“k”代表什么,就无法回答您的问题。具有讽刺意味的是,这是不可能的原因是变量“k”的命名不当,所以这是你应该担心的。如果你给“k”起一个更具描述性的名字,那么“k-1”的命名方式应该很自然,就像“will_win_lottery”和“will_not_win_lottery”的例子一样。