我正在为我的组织制定一些编程实践标准。这样做我遇到了“这个问题的标题”这个问题
有些人认为最好尽可能晚地声明变量,有些人认为将它们放在方法起始大括号的顶部是件好事。
Oracle Standard 还说要尽早声明它们。我也赞成在它们所属的最接近的花括号中声明它们。
担忧是
代码可读性
表现
不易出错
欢迎任何评论。
这就是麦康奈尔在他的必读书籍 Code Complete 2 中所说的:
理想情况下,声明和定义每个变量靠近它的使用位置。声明建立变量的类型。定义为变量分配一个特定的值。在支持它的语言(例如 C++ 和 Java)中,变量的声明和定义应靠近它们首次使用的位置。
他还建议让变量保持活动的时间尽可能短,并尽量减少范围。
对我来说重要的是遵循命名约定(Sun 的 Java 代码约定被广泛使用)。至于他们首先在哪里声明,出于性能原因,我会尽可能延迟声明(声明一个您可能不使用的 var 有点浪费)。除非您事先知道它肯定会被使用,否则您可以将它与其他 var 分组以提高可读性。我认为这就是JCC 所说的。
对于代码代码可读性,我发现在块的开头声明变量是最佳选择。
当通过代码时,您总是知道在哪里查找声明,而不必在代码行之间查找。在查看方法时,最好先查看声明的变量,然后再查看代码。我认为它就像一本食谱中的食谱,您将所需的成分与食谱说明分开列出。
至于性能,我看不出这会有什么不同。虽然延迟声明可能会通过仅在块末尾需要时创建变量来节省一点内存,但您将使用与在块开头声明时相同的内存量。
我会说容易出错的原因与可读性相同。
在所需的最小范围内声明并在块的开头声明。
我认为“代码可读性”是这里唯一重要的一点。如果变量声明得更接近它们的使用位置,那么代码肯定更易读。
但是,有时,为了防止新程序员在语言之间转换时出现“错误”,可能会采用特定风格的编码方法。例如,JavaScript 具有功能范围,而 Java 具有块范围。如果 Java 程序员不了解 JavaScript 的功能范围,他可能会在 JavaScript 中遇到问题。因此,对于 JavaScript,为了避免潜在的错误,建议在函数/方法的开头声明所有内容。
就像我上面提到的,“性能”不应该是一个问题。但是,如果您选择在更接近使用它们的位置声明变量,它可能有助于减少变量的声明和初始化成本。
好问题Javanator,根据我的分析
代码可读性:
在方法启动中声明变量的好习惯,因为易于维护,并且更少混淆。
表现:
情况1:
如果我们在方法开头声明变量并且方法有数百个语句,我们最后需要 10 个变量,然后 50 个语句不必要地为这些变量占用内存。
如果我们在方法中需要 20 个变量并且我们在开头声明了,如果我们在最开始的语句中遇到任何异常,就会不必要地占用内存。
案例2:
如果我们在需要的地方声明变量,它会提供更多的性能。