作为良好的 Java 编码规范,可省略的 this 该不该省略?

2018-01-23 13:21:56 +08:00
 Cbdy

第一种风格

...
public WebServer() {
    vertx = Vertx.vertx();
    router = Router.router(vertx);
}

public void start(int port) {
    vertx.createHttpServer().requestHandler(router::accept).listen(port);
}

public void start() {
   start(8080);
}
...

第二种风格

...
public WebServer() {
    this.vertx = Vertx.vertx();
    this.router = Router.router(this.vertx);
}

public void start(int port) {
    this.vertx.createHttpServer().requestHandler(this.router::accept).listen(port);
}

public void start() {
   this.start(8080);
}
...

当然还有一种混搭风

8491 次点击
所在节点    Java
26 条回复
zts1993
2018-01-23 20:19:52 +08:00
其实这种问题不会影响代码质量。。至少不是不属于关键问题
毕竟很多时候不写 this 是错误的。
Ziav
2018-01-23 20:19:53 +08:00
不省略。
20015jjw
2018-01-24 05:48:21 +08:00
用 m
laxenade
2018-01-24 08:01:48 +08:00
写 this 便于 IDE 补全(雾
corningsun
2018-01-24 14:30:14 +08:00
特别去找了一下。

Google Java 编程规范 和 阿里巴巴 Java 编程规范 都没有提到这个问题。。。。

但是从一些示例和开源代码,发现 混搭的还是多

Oracle Java Language Specification: https://docs.oracle.com/javase/specs/jls/se9/html/jls-15.html#jls-15.8.3


阿里巴巴 Java 开发手册(纪念版): https://yq.aliyun.com/articles/69327


Doubble 源码:
https://github.com/alibaba/dubbo/blob/master/dubbo-filter/dubbo-filter-cache/src/main/java/com/alibaba/dubbo/cache/filter/CacheFilter.java



JDK 源码:String
```java
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
public int length() {
return value.length;
}
```

Google Java Style Guide: https://google.github.io/styleguide/javaguide.html

总结下:
构造器和 setter 方法中使用 this
其他方法中可以不用
zhazi
2019-03-21 08:54:21 +08:00
构造和 g&s 有 this 因为是生成的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/425215

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX