不是想说this
的用法特点,而是想说对私有方法调用时,希望可以加上this
关键字。有助于后期代码的阅读。当然,这只是我的个人习惯和观点。说说为什么,来看看代码。
// Dubbo 源码,DefaultFuture.setCallback
// invokeCallback是一个私有方法,但是我第一眼看这个方法,无法直接明白那行代码在调用一个私有方法,我会考虑它可能是本类的方法,或者是父类的方法,如果不是在IDE中,我还得看看它是不是静态方法。我需要1秒的思考时间。
// 为了减少这1秒的思考,我喜欢加上辨识度更高的this关键字。
public void setCallback(ResponseCallback callback) {
if (isDone()) {
invokeCallback(callback);// 如果我没在这边标注,你能知道invokeCallback()是在调用一个私有方法吗?
} else {
boolean isdone = false;
lock.lock();
try {
if (!isDone()) {
this.callback = callback;
} else {
isdone = true;
}
} finally {
lock.unlock();
}
if (isdone) {
invokeCallback(callback);// 如果我没在这边标注,你能知道invokeCallback()是在调用一个私有方法吗?
}
}
}
// 加上了this关键字
// 我不用思考就会知道它大概率是本类私有方法。
// 而且this关键字在IDE中的辨识度很高,直接就可以看到它是个方法,而不是个普通变量
// 我只是在大部分情况下,不希望在看代码时有过多的卡顿时间
public void setCallback(ResponseCallback callback) {
if (isDone()) {
this.invokeCallback(callback);
} else {
boolean isdone = false;
lock.lock();
try {
if (!isDone()) {
this.callback = callback;
} else {
isdone = true;
}
} finally {
lock.unlock();
}
if (isdone) {
this.invokeCallback(callback);
}
}
}
关于加this
关键字对本地私有方法的前缀。没有很明显的案例。不过我一直坚持这么做,我认为效果很好。