闭包中的自别名

self alias in closures

我在 java 代码中经常使用闭包,并且由于项目要求将 'this' 别名包含到所有实例字段和方法中,所以我曾经使用 'self' 别名引用外部作用域实例变量以逃避代码的丑陋。 f.ex.:

class SomeStrategyWithLongNameClass implements ... {

    private final SomeStrategyWithLongNameClass self = this;

    private SomeService someService;

    public Function<...> someMethod() {
         return new Function<>() {
             @Override 
             public Result apply(Argument x) {
                 ....
                 SomeVar var = self.someService.execute(...);
                 ....
                 return result;
             }
         }
    }
}

我知道也可以用“SomeStrategyWithLongNameClass.this”引用实例字段,但在我看来,这只会污染代码,使其更难阅读。

我突然被告知,w/o 解释,停止使用 'self' 别名并坚持使用 'Class.this' 模式。

谁能告诉我这样做有充分的理由吗?

所讨论的项目规定在所有地方都使用 this 限定词这一事实已经充分说明了它所采用的文化和纪律。显然,简洁不是最重要的,但对 Joe Developer 来说显而易见和熟悉才是。不要低估这些原则在大型企业项目中的价值。

您自己引入了一个约定,现在每个人都必须遵守该约定才能拥有一致的代码库。未能正确实施将导致错误或错误。潜在的长期损害超过了成语的潜在价值。