Variables 变量名的长度有多长?

Variables 变量名的长度有多长?,variables,naming-conventions,Variables,Naming Conventions,我想,我在寻找两个答案,一个是技术性的,一个是固执己见的 变量名的长度有多长 我总是尽量使变量尽可能短,同时保持适当的意义水平。然而,随着一些“子例程”复杂性的增加,我发现需要创建更长的变量名来继续保持它们的意义。变量的长度对性能有影响吗 例如,我刚刚使用了MBReadPerSecondAverageAfterLastFlushToLog,这与我所希望的SuperCaluragilisticExpialidious非常接近 谢谢 马特 p、 很抱歉,如果你现在脑子里有一首Mary Poppins

我想,我在寻找两个答案,一个是技术性的,一个是固执己见的

变量名的长度有多长

我总是尽量使变量尽可能短,同时保持适当的意义水平。然而,随着一些“子例程”复杂性的增加,我发现需要创建更长的变量名来继续保持它们的意义。变量的长度对性能有影响吗

例如,我刚刚使用了MBReadPerSecondAverageAfterLastFlushToLog,这与我所希望的SuperCaluragilisticExpialidious非常接近

谢谢

马特


p、 很抱歉,如果你现在脑子里有一首Mary Poppins的歌。

你在尽可能短地命名变量方面是正确的,同时保留了足够的含义,可以通过查看变量名称来描述变量的功能

不,变量名的长度与性能完全无关

编辑:

出于某种原因,我以为你在谈论C++。如果您是(或C、Delphi或其他编译语言),则上述内容是正确的(除非调试信息不会出现在发行版可执行文件中)

对于Lua、Python或Ruby等动态语言,变量名的长度很可能会影响运行时性能,具体取决于如何执行变量名查找。如果对变量名进行散列,然后使用散列对值表进行索引以获取变量的值,那么从本质上说,散列函数处理的数据越多,所需时间就越长


也就是说,不要因为认为短变量名更快而牺牲有意义的变量名。速度的提高通常可以忽略不计,而且绝对不值得牺牲程序的可维护性。

尽可能清楚地说明这一点。但是,在您的示例中,看起来您可能还有一些其他问题

  • 变量的名称向我表明您有一个具有多个职责的函数

  • 这不是物体的用途吗?假设一个名为
    的对象读取
    ,这只是一个非常简单的示例,它可能/可能无论如何都不符合您的需要

      Reads.AveragePerSecond  
      Reads.Size  
      Reads.IsLoggedFlushed
    

  • 我认为这里的主要问题是您忘记了变量不是某种全局唯一标识符。它们有一个上下文,这有助于解释它们。通过阅读它们,您通常知道上下文:名称空间、类名、方法名、前几行的含义、通过给变量赋值的方法名,或者在您的示例中,一些基本的科学知识(如MBps)是数据传输速度的单位,速度总是通过平均值来衡量,等等。。。如果上下文解释了其余部分,
    MBReadPerSecondAverageAfterLastFlushToLog
    可以轻松调整速度

    为了让你更容易理解,如果你想要啤酒,而不是对你的女朋友说,
    请给我一杯啤酒不是那个
    请给我一杯5°C的格瑟啤酒,从我昨天在商店里花1美元买的冰箱里拿出来

    引入对象会产生什么样的开销?他没有申报 变量少了多少

    这可能是过早的优化。首先编写代码,然后查找瓶颈

    我已经有了一个“ReadFiles”方法 就像MBREADPERSECOND AFTERFLUSHTOLOG一样, KBReadPerSecondAverageAfterLastFlushToLog, MBReadPerSecondAveragePerReadOperation等位于


    如果前两个变量大致相同,并且您应该有一个
    DataTransferSpeed
    类,该类在需要时为您进行单位转换,那么这些变量可能是
    ReadSpeadAfterFlushToLog
    。第三个变量可以是
    AverageSpeedPerReadOperation
    。如果我们这里只有读取速度,并且上下文描述了它,例如方法名称包含该信息,那么即使是
    Read
    部分也可以省略。如果变量太多,则可能需要多个较小的方法,并且可能需要将用于结构和对象的变量分组。

    您使用的是哪种语言?这可能与答案有关,取决于语言。如果你用TI Basic编程,那么2个字符太长了,因为它只支持1个字符的变量名。不要讨厌玩家,讨厌游戏。我同意你的命名风格。像dMBXlgS这样的东西是疯狂的程序员为了愚弄人们,让他们以为自己很聪明,只是因为没有人知道他们的意思。实际上,变量名的长度可能与性能有关(即使不是实际问题),这取决于语言和实现。但仍然是+1。在编译语言中,它永远不会对运行时性能产生影响。但在即时编译语言中,它可能会减慢程序启动和程序性能。如果调试器可以显示实际的变量名,那么它们会在内存中移动,可能会产生一些影响。当然,在程序的生命周期中,你可能无法合理地用微秒来衡量这种影响,但在CPU周期级别上,它可能是非零的。多谢道格。引入对象会产生什么样的开销?声明变量不是更少吗?我已经有了一个“ReadFiles”方法,其中包括MBReadPerSecondAfterFlushToLog、KBReadPerSecondAverageAfterLastFlushToLog、MBReadPerSecondAveragePerReadOperation等。