作为NetBeans的狂热用户,我在引入新变量时不断获得拆分变量声明和赋值的建议。作为一个超级快速的例子,让我们采用这个Java系列:
String someInput = JOptionPane.showInputDialog(null, "- Enter something: ");
与
String someInput;
someInput = JOptionPane.showInputDialog(null, "- Enter something: ");
NetBeans似乎更喜欢后者(不过我不知道其他IDE)。虽然它显然有两种方式,但如果有的话,这将被视为“良好做法”?或者纯粹是个人喜好?
(显然,将两者划分为一条额外的线,你可以将它组合成一条线,但这不是重点。)
答案 0 :(得分:39)
如果您要将它们放在连续的行上,则没有理由拆分声明和赋值。如果赋值是有条件的,或者它需要进入单独的代码块(如try / catch,或者如果赋值在构造函数中等),我只会拆分它们。
答案 1 :(得分:19)
追溯到早期静态类型编程的常见模式是在需要作用域的块顶部声明所需的所有变量,然后随后分配给这些值。
话虽如此,只要你能够清楚地将你的代码的意图传达给你在其上工作的人,或者你自己在一年的时间内,它就不应该真正重要。
让我们改变我们对项目建设的传统态度:而不是想象我们的 主要任务是指导计算机做什么,让我们来 专注于向人类解释什么 我们想要一台电脑。 - 唐纳德克努特
答案 2 :(得分:16)
这是一个在7.0到7.3之间的NetBeans中添加的选项。如果您不喜欢这个提示,可以通过取消选中来更改它: 工具>选项>编辑>提示>建议>拆分声明
答案 3 :(得分:3)
Netbeans建议这可以加速编码,例如考虑这个分配
final String myString = "somevalue"
然后,您确定该值实际上取决于某些boolean
final String myString;
if(something) {
myString = "somevalue"
} else {
myString = "someothervalue"
}
要将一个转换为另一个,您可以使用代码提示来填充声明和赋值,并使用if...else
模板以非常少的步骤生成代码。
一般情况下,如果您无条件分配,则没有理由拆分声明和分配。
答案 4 :(得分:0)
我认为这不是什么大问题。选择你喜欢的风格,并始终坚持下去(如果你在一个团队中,如果每个人都按照类似的方式布置他们的代码,这会有所帮助。)
我个人更喜欢在声明时初始化我的变量。出于这个原因,我更倾向于前者而不是后者。
答案 5 :(得分:0)
代码完成,这是大多数编程社区都认可的,在其第241页中建议,作为防御性编程的问题,您可以初始化每个变量(如您声明的那样)(您的第一个选项)或将其初始化为接近它的位置首先使用(你的第二个选择)。
然而,本书建议第二种选择更好,因为如果你使用第一种选择,你的变量可能在其声明和使用之间发生了变化。
在您的情况下,第二种情况下声明和使用之间的区别是单行。因此,该书的关注点不适用。然而,它的担忧是合法的,这可能是Netbeans设计师包含这个技巧的原因(即使他们过度使用它)。