【问题标题】:How to correctly name a variable which represents a value of 1 - n?如何正确命名代表值 1 - n 的变量?
【发布时间】:2010-09-16 16:14:30
【问题描述】:

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

我经常看到:

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

...这对我来说似乎既具有描述性又毫无意义。

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

谢谢。

【问题讨论】:

    标签: variables naming


    【解决方案1】:

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

    【讨论】:

    • 但如果这是一个较长过程中没有合适的域表示的中间步骤怎么办?
    • 好点!我想只要变量的范围很短,并且有助于清晰,那么命名为 oneMinusK 是合理的。
    • 是的。这就是我的想法,尤其是如果您想查看大型计算中的中间点。例如。但是,正如您正确指出的那样,如果变量在域内具有表示,那么使用它而不是其数值属性的一些晦涩的表达。 (-:
    • 不同意。寻找意义。它必须在那里。如果它晦涩难懂,则可能意味着需要进行一些挖掘以了解小范围的中间结果。
    • 如果您在较长的流程中有一个中间步骤,那么该流程将成为域。如果是这种情况,我会认为 -- 可能 -- nMinusOne 是一个给定域的公平名称。尽管作者的意图似乎很明显,所以答案是没有实际意义的:-)
    【解决方案2】:

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

    所以

    float will_win_lottery = 0.00000000001;
    float will_not_win_lottery = 1 - will_win_lottery;
    

    【讨论】:

      【解决方案3】:

      这真的很重要吗?使用我;它的描述性不亚于 k。如果您是关于代码描述性的强迫症,则需要记录/注释此类事情。

      【讨论】:

        【解决方案4】:

        我会称之为Complement

        【讨论】:

        • 我认为补码更准确地描述了 (0 - n)。
        • 概率 1 - n 是补码,所以我猜这取决于域。
        【解决方案5】:

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

        【讨论】:

        • 好点,但我在编写速度确实很重要的关键部分时出现了这个问题。
        • 然后我会选择 oneMinusK,并记录该变量是为了在声明它的地方进行优化。另外,请确保在使用和不使用变量的情况下对其进行测量,以确保它确实为您节省了一些东西。
        • 我可能会为该值命名,而不考虑任何性能问题。这取决于代码是否更容易理解有或没有符号名称。
        • +1 到 KJ。命名计算通常是为了读者;我不会认为这是一种优化
        • 我认为原始问题的全部意义在于很难想出比 1 - k 更好的名字。
        【解决方案6】:

        这些应该是常量吗?

        如果您只是出于易读性的原因而这样做,为什么不按照 la Dan 的建议创建一个方法。

        float complement(float n) { return (1.0 - n); }
        

        【讨论】:

          【解决方案7】:

          您的用法似乎已经足够具有描述性,请继续使用。

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-04-01
              • 2013-01-19
              • 1970-01-01
              • 1970-01-01
              • 2014-05-30
              • 1970-01-01
              • 1970-01-01
              • 2019-08-05
              相关资源
              最近更新 更多