... 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); } ...
当然还有一种混搭风
![]() | 1 rim99 2018-01-23 13:24:04 +08:00 via Android 我喜欢不省略,可以明确的看出这是个实例属性 |
![]() | 2 coolcfan 2018-01-23 13:27:42 +08:00 via Android 看具体代码规范,比如有的项目会要求把所有 private field 名字以下划线开头,而 protected 和 public 的不用,此时 private 的就不写 this,另外两个写…… |
![]() | 3 x8 2018-01-23 13:34:42 +08:00 遵循团队规范 自己的项目随意,反正 IDE 能跳转,怎么写是个人审美问题 |
![]() | 4 vela 2018-01-23 13:36:31 +08:00 我的原则是,以提高可读性为优先。 大多数情况下,如果省略和不省略是相同含义的话,倾向是省略,减少冗余,以便减少阅读干扰。除非特殊场景下需要强调的。 具体到 this 这个地方,一般尽量避免本地变量遮盖 field 变量(我们的 checkstyle 配置是除了 setter 以外如果出现遮盖直接检查失败),就避免了 99%必须要用到 this 的场景。 |
![]() | 5 yulitian888 2018-01-23 13:48:19 +08:00 如果使用某些重构工具\插件的情况下,显式声明会更安全,因为工具不一定能准确识别 this 还是 base,甚至继承好几层的情况下 base 都不足以表达了,你敢不加前缀? |
![]() | 6 aristotll 2018-01-23 13:56:15 +08:00 不省略 个人认为 |
7 paragon 2018-01-23 14:50:23 +08:00 不用 跟匈牙利命名法一样 现代 IDE 都会标记颜色的, |
![]() | 9 Bigears 2018-01-23 14:54:26 +08:00 好习惯是不省略 |
![]() | 10 mosliu 2018-01-23 15:06:00 +08:00 我一般习惯 : 属性加,容易识别和区分 即 this.vertx = Vertx.vertx(); 而函数省略。即 start(8080); 所谓的混搭风。 |
11 WispZhan 2018-01-23 15:06:46 +08:00 带"this."好,成员域一目了然。 |
12 xia0pia0 2018-01-23 15:17:30 +08:00 不省略好,这样用其他开发语言的人一眼也能看出来。 |
![]() | 13 doubleflower 2018-01-23 16:36:53 +08:00 不省略可读性更高 |
![]() | 14 Tneciv 2018-01-23 16:43:06 +08:00 习惯了 this 和 super 都不省略 |
![]() | 15 noe132 2018-01-23 18:12:53 +08:00 via Android 写 Javascript 表示类方法都要自己在方法体第一行加 const self = this 然后所有实例属性用 self 访问 |
16 yaoliyc 2018-01-23 18:29:35 +08:00 via iPhone ![]() 爱省略不省略,风格统一,自圆其说即可。 |
![]() | 17 looplj 2018-01-23 18:52:51 +08:00 省略,看着烦。 |
![]() | 18 searene 2018-01-23 19:38:13 +08:00 对于这种字段 intellij 里面会用特别的颜色标出,所以即使不加也不影响代码的阅读,所以我觉得加不加都无所谓。 |
![]() | 19 evilWill 2018-01-23 19:39:40 +08:00 除了自动生成的 setting() 中带 this 其余都省略 |
![]() | 20 workwonder 2018-01-23 20:06:24 +08:00 via Android 不带 this 感觉像方法内部的局部变量 |
21 zts1993 2018-01-23 20:19:52 +08:00 其实这种问题不会影响代码质量。。至少不是不属于关键问题 毕竟很多时候不写 this 是错误的。 |
22 Ziav 2018-01-23 20:19:53 +08:00 不省略。 |
![]() | 23 20015jjw 2018-01-24 05:48:21 +08:00 via Android 用 m |
24 laxenade 2018-01-24 08:01:48 +08:00 写 this 便于 IDE 补全(雾 |
![]() | 25 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 其他方法中可以不用 |
![]() | 26 zhazi 2019-03-21 08:54:21 +08:00 via Android 构造和 g&s 有 this 因为是生成的 |