下面两个代码有什么区别
What is the difference between the two codes below
这里是同一个函数的两个实现。第一个是我自己写的,第二个是我在 http://developer.android.com/guide/topics/location/strategies.html.
上看到的
**1st code:**
private boolean isSameProvider(String provider1, String provider2) {
if (provider1.equals(provider2)) {
return true;
}
else return false;
}
**2nd code:**
private boolean isSameProvider(String provider1, String provider2) {
if (provider1 == null) {
return provider2 == null;
}
return provider1.equals(provider2);
}
如果参数 provider1
为 null,则第一段代码可能会抛出 NullPionterException。我们在空对象上调用 provider1.equals(provider2)
。
第二段代码检查参数provider1
是否为空,如果确实为空则检查参数provider2
是否为空。
如果 provider1 和 provider2 都为 null,则它们被认为是同一提供者并且此方法 returns 为真。
第二个代码对您的应用来说更安全,因为它会检查以确保 provider1 == null
.
但是,如果您的应用程序中的 provider1 和 provider2 往往为空,我宁愿编写如下代码:
private boolean isSameProvider(String provider1, String provider2) {
if (provider1 != null && provider2 != null) {
return provider1.equals(provider2);
}
return false;
}
这里是同一个函数的两个实现。第一个是我自己写的,第二个是我在 http://developer.android.com/guide/topics/location/strategies.html.
上看到的**1st code:**
private boolean isSameProvider(String provider1, String provider2) {
if (provider1.equals(provider2)) {
return true;
}
else return false;
}
**2nd code:**
private boolean isSameProvider(String provider1, String provider2) {
if (provider1 == null) {
return provider2 == null;
}
return provider1.equals(provider2);
}
如果参数 provider1
为 null,则第一段代码可能会抛出 NullPionterException。我们在空对象上调用 provider1.equals(provider2)
。
第二段代码检查参数provider1
是否为空,如果确实为空则检查参数provider2
是否为空。
如果 provider1 和 provider2 都为 null,则它们被认为是同一提供者并且此方法 returns 为真。
第二个代码对您的应用来说更安全,因为它会检查以确保 provider1 == null
.
但是,如果您的应用程序中的 provider1 和 provider2 往往为空,我宁愿编写如下代码:
private boolean isSameProvider(String provider1, String provider2) {
if (provider1 != null && provider2 != null) {
return provider1.equals(provider2);
}
return false;
}