我看到很多SO帖子,说Java将任何未初始化的变量设置为null(如here,here或here ...)。我应该使用它们之前初始化我的变量为空?
但最近,我去当这个代码,谷歌here写:
cur = cr.query(builder.build(), INSTANCE_PROJECTION, selection, selectionArgs, null);
while (cur.moveToNext()) {
String title = null;
long eventID = 0;
long beginVal = 0;
// Get the field values
eventID = cur.getLong(PROJECTION_ID_INDEX);
beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
title = cur.getString(PROJECTION_TITLE_INDEX);
// Do something with the values.
...
}
我真的宁愿这样:
// Get the field values
long eventID = cur.getLong(PROJECTION_ID_INDEX);
long beginVal = cur.getLong(PROJECTION_BEGIN_INDEX);
String title = cur.getString(PROJECTION_TITLE_INDEX);
我认为谷歌developpers都弄好了真正合格的,所以我奇怪,因为我们处在同一个范围内:宣布第一种方式而非第二种方式有什么优缺点?
我认为这是一个风格问题,以及您的编程风格应该如何基于公司标准(甚至是个人标准)。它们可能对他们更易读。但最终这个问题在我眼中是基于意见的。 – SomeJavaGuy
这不是那些帖子说的。 Java只将未初始化的成员变量和静态变量设置为null。这不适用于局部变量。 – khelwood
当我学会了在70年代编程时,我使用了Pascal,这是一种当时需要您将变量声明与其使用分开的语言。我仍然有时会看到当时的风格正在延续(尽管越来越少)。在像Java这样的现代编程语言中,无论我多么认同Google开发人员通常非常合格,我个人的口味显然是针对Google的版本。 –