代码之家  ›  专栏  ›  技术社区  ›  Community wiki

与其他语言相比,使用Delphi是否更有可能重用临时变量?

  •  7
  • Community wiki  · 技术社区  · 2 年前

    由于Delphi让你一直走到方法的var部分来声明一个局部变量,你发现自己崩溃了吗 "Curly's Law" (重复使用变量)比你在大学时更频繁?(当然,除非你在大学里为Pascal编程)。

    如果是这样的话,你该怎么做才能打破这种习惯,尤其是在需要获取和/或设置大量属性的函数中。是否有可接受的阈值 TempInt : Integer TempStr : String 。(你在里面用“e”吗 T e mp 有时而不是其他时候?)

    11 回复  |  直到 16 年前
        1
  •  15
  •   CodingWithoutComments    16 年前

    我几乎从不重复使用变量。我不想说永远,但事实确实如此 接近永远

    原因如下:

    • 小方法 (保持方法和属性getter/setter尽可能简洁是一种很好的做法)。
      • 当只做一件事时, 不需要 重复使用变量
      • var部分始终显示在屏幕上。
    • 编译器根据需要重用存储,因此重用只是 懒惰编码器拐杖 没有任何性能改进。
    • Delphi的较新版本 CTRL+SHIFT+V 如果我感到懒惰,则声明变量。
    • 重用变量 使调试更加困难 -维护要花费更多的时间和精力,而不是开发(对于任何严肃的应用程序),所以总是要 使维护更容易 ,即使这会使开发变得更加困难。
    • 更喜欢 用户定义的类型 ,所以账户余额是一种特定的类型,而不仅仅是一种货币。这意味着变量 可重复使用较少 无论如何
    • 对于 循环变量(一种常见的可重用变量)现在使用较少,我们可以使用 中的 跳过迭代器 所有这些。
    • 我的变量有 描述性名称 ,所以断章取义地使用它们是没有意义的。

    一般来说,我喜欢把所有的变量都放在顶部,原因和我喜欢在我的单元上有一个接口部分是一样的。这有点像在纸上写一篇摘要——让我大致了解正在发生的事情,而不必阅读整篇论文。Delphi可以受益于在“内部范围”中声明变量的能力,比如在 对于 环路或其他 开始/结束 块,但我不知道这会在多大程度上分散Delphi代码的清洁性和可读性。

        2
  •  6
  •   JosephStyons    16 年前

    这只是一个纪律问题。是的,内联变量声明可能会更好地服务于Delphi,但这并不是什么大不了的事。只要确保以描述性的方式命名变量,那么错误地使用它们就会感到尴尬。而且,正如Stephan Eggermont所说,如果你的方法真的变得那么长,那么这就是一种完全不同的代码气味。

        3
  •  5
  •   Stephan Eggermont    16 年前

    不是。由于我使我的方法非常小,var部分就在不远处。自从上大学以来,我的方法已经减少了很多,我想我打破它的次数更少了。

        4
  •  5
  •   robsoft    16 年前

    如果例程有几个不同的迭代部分,我肯定倾向于重复使用局部变量,比如“Findex”(或者只是简单的“I”)。我想这不是最好的做法,但我想这只是我做的地方非常明显,而且用法显然没有重叠。

    虽然我不知道Ctrl-Shift-V(稍后会尝试!),但回到例程的顶部并输入新变量通常并不是什么大事。

    看看别人怎么说会很有趣

        5
  •  3
  •   MarkF    16 年前

    作为一般的安全规则,我不倾向于重用本地变量。我非常喜欢d2007+中新的“var”实时模板。只需键入var[tab],就会弹出帮助程序。还可以检查Ctrl-Shift-D(其他人提到Ctrl-Shift-V用于本地变量)来声明字段。

        6
  •  2
  •   gabr    16 年前

    声明变量非常简单-有时它们会自动创建(“for”循环模板),有时您可以只使用“Declare Variable”重构(如果您使用MMX,则可以使用“Add Local Var”,这是您应该使用的)。

        7
  •  2
  •   Forer    16 年前

    您可以开发自己的编码风格,根据需要使用变量。当需要时,我通常使用唯一变量(90%)和一些临时变量(10%)。

    这取决于变量的性质。如果它是一个有助于支持其他代码(循环计数器、构建SQL字符串等)的变量,那么可以重用的临时变量是有帮助的。在这种情况下,临时变量作为代码部分中的“一次性”变量非常有用。只需在var声明中添加一条注释,指示临时变量即可。

    即//在该过程中根据需要重新使用温度变量-->在使用后/使用前清除/重新初始化它们。

    除此之外,我避免使用温度变量&永远不要用它们来保存关键数据。然后应该使用唯一的var来避免混淆&使代码的可读性/维护更加清晰。

        8
  •  1
  •   TheBrain    16 年前

    我认为delphi对临时变量的过度使用是个例外。大多数时候,当我创建一个函数/过程时,我知道我需要循环或临时字符串,我要做的第一件事就是创建一个vari,j:integer;tmp:string;并根据需要添加更多:)

        9
  •  1
  •   anon    16 年前

    作为一个长期使用Delphi的用户(从1.0开始),这是我讨厌Pascal的主要原因。所有其他现代语言在使用时都支持定义,但Delphi坚持使用var部分,Delphi程序员坚持用荒谬的手势来证明这一点。

        10
  •  1
  •   user34411    16 年前

    柯利确实有一个很好的观点。在这方面,我偶尔会成为一个罪人。通常只是一个临时字符串变量,更重要的是为了方便。

    老实说,我从来没有真正想过…直到现在。我对VAR部分的现状没有异议,因为这是自Delphi1.0以来养成的习惯。

    为了回答这个问题,我只重用了一个临时变量,通常是一个字符串,通常只是为了获得一些轻微的性能改进。对此没有意见。

        11
  •  1
  •   Peter Turner    16 年前

    如果没有CTRL-SHIFT-V作为VAR部分的快捷方式,我可能会发现这是一个更大的问题。我在这里不是在写巨人方法,但有时它们会有点失控(当然我可以证明这一点),这有很大帮助。我不确定这个快捷方式是来自cnTools还是GExpert,但它们都很有用,我推荐它们两者。