当前位置: 首页 > 面试题库 >

尽早声明局部变量或在它们所属的最近大括号处声明?[关闭]

沈龙光
2023-03-14
问题内容

我正在为我的组织制定一些编程实践标准。这样做时,我遇到了“此问题的标题”问题

一些人发现最好尽早声明变量,而另一些人发现将它们放在方法的顶部以大括号开头为好。

Oracle Standard还表示要尽早声明它们。我也赞成在它们所属的最接近的花括号处声明它们。

值得关注的是

  1. 代码可读性

  2. 性能

  3. 更少的错误倾向

欢迎任何评论。


问题答案:

这就是麦康奈尔在必读的《代码完成2:

理想情况下,声明和定义每个变量,使其接近使用位置。 声明建立变量的类型。定义为变量分配特定的值。在支持它的语言(例如C
++和Java)中,应在首次使用变量的地方声明和定义变量。

他还建议使变量尽可能短地保持活动状态,并最小化范围。

对我来说重要的是遵循命名约定(Sun的Java代码约定被广泛使用)。至于它们在哪里首先声明,出于性能原因,我会尽可能延迟声明(声明您可能不使用的var是一种浪费)。除非您事先知道肯定要使用它,否则在这种情况下,您可以将其与其他变量组合在一起以提高可读性。我认为这就是JCC所说的。



 类似资料:
  • 局部变量使用关键字 def 来声明,其只在声明它的地方可见 . 局部变量是 Groovy 语言的一个基本特性. 例子 13.2 . 使用局部变量 def dest = "dest" task copy(type: Copy) { form "source" into dest }

  • 问题内容: 所以这很奇怪,我知道代码本身是没有用的,但是我想知道为什么会收到错误: 我正在写一些代码,我已经写了这个: 当时没有考虑可变范围,显然这是没有用的,因为无论如何我都无法使用过去。我没有得到的是为什么我得到了我的错误: 现在,如果我将其修改为: 它将编译正常。我给人的印象是,如果大括号下有1行是可选的……显然,还有其他考虑,或者两者都会编译或失败。 有人可以向我解释一下,还是可以指向一个

  • 最近,我按照react教程创建了一个模板项目,并一直在修改代码以满足我的需要。特别是,组件上的这段代码被传递了一个名为的参数。 在本例中,我从控制器返回了一个JSON对象,并使用名为的参数将其传递给该组件。JSON的一个属性是“name”,我想把这个名称分配给一个名为`label'的变量。给我带来麻烦的一件事是: 第一个正确输出名称。但是,第二个日志未定义。经过一些尝试和错误之后,我发现如果我从声

  • let和const是JavaScript里相对较新的变量声明方式。 像我们之前提到过的,let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。 const是对let的一个增强,它能阻止对一个变量再次赋值。 因为TypeScript是JavaScript的超集,所以它本身就支持let和const。 下面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替v

  • 问题内容: 我想制作一个可以在整个应用程序中访问的自定义对象的全局数组(AppDelegate,ViewController类,TableViewController类等)。我已经研究了一种解决方法,但没有找到答案。我曾尝试将数组设置为公共范围,但是收到了编译器警告,提示当我尝试在其他文件中访问该数组时,出现错误提示 我将如何使该数组可被应用程序中的所有文件全局访问,我将在哪里实例化该数组? 问题

  • 问题内容: 我只想在多个地方使用a :不仅是视图和控制器,而且还包括和其他配置文件。 我不想要这样的事情:使用Config类加载配置文件;使用CI 等。 我只想声明一个给定的(它可以是一个常数,但我需要将它作为一个变量),并在所有地方绝对使用它。 实际上…我想知道CI引导程序中哪个PHP文件是第一个要解析的文件,因此我可以在其中引入我的全局变量…但不是核心/系统或不适当的文件,而是“最佳”适合此简