使用Delphi你比其他语言更有可能重用临时变量吗?

Pet*_*ner 7 delphi variables

由于Delphi让你一直到方法的var部分来声明一个局部变量,你是否发现自己比在大学时更频繁地打破"Curly's Law"(重新使用变量)?(当然,除非你在大学编程Pascal).

如果是这样,你怎么做才能打破这种习惯,特别是在需要获取和/或设置大量属性的函数中.是否有一个门槛的地方是可以接受的申报TempInt : IntegerTempStr : String.(你有时使用'e' 而不是其他时间吗?)Temp

Jim*_*eth 15

我几乎没有重用变量.我不想说永远,但它永远不会接近.

原因如下:

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

一般来说,我喜欢将所有变量放在顶部,原因与我在单元上有接口部分的原因相同.这有点像在纸上写一个摘要 - 让我对所发生的事情有一个大概的了解,而不必阅读整篇论文.Delphi可以受益于能够在"内部范围"中声明变量,就像在for循环或其他开始/结束块中一样,但我不知道会有多少会分散Delphi代码的清晰度和可读性.

  • @Peter:我会为我创建一个程序,所以我只是传递('thisstring',label1),它为我做了GetFeild()和.caption:=.也许我会设置一种传递字段和标签列表的方法,甚至可以创建一种将两者相互关联的方法.如果您在某处工作,则无法创建帮助程序,那么您需要查找新工作.顺便说一下,我的公司正在招聘,我们让你写好代码. (2认同)

Jos*_*ons 6

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


Ste*_*ont 5

并不是的.由于我的方法非常小,因此var部分并不遥远.由于我的方法规模自大学以来已经减少很多,我会说我不经常打破它.


rob*_*oft 5

如果例程有几个不同的迭代部分,我肯定倾向于重复使用局部变量,如'Findex'(或只是简单的'i').这不是我猜的最佳实践,但我想我在这里做的很明显,显然用法并不重叠.

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

看到其他人说的话会很有趣.:-)