Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:什么被认为更具可读性;这";或否“;这";_Java_Coding Style_This_Readability - Fatal编程技术网

Java:什么被认为更具可读性;这";或否“;这";

Java:什么被认为更具可读性;这";或否“;这";,java,coding-style,this,readability,Java,Coding Style,This,Readability,您实际上不需要用Java编写“this”关键字。但这样做是否更好?将你的风格同质化有意义吗?也就是说,如果你只使用一次“this”,那么每次暗示时都会使用它?还是有一个地方你总是使用它,而其他地方你从不使用它?普遍的共识是,你应该只在必要的时候使用这个,而不是在其他任何时候 private String param; public Construct(String param) { // Usually the only place you need to use this. this.

您实际上不需要用Java编写“this”关键字。但这样做是否更好?将你的风格同质化有意义吗?也就是说,如果你只使用一次“this”,那么每次暗示时都会使用它?还是有一个地方你总是使用它,而其他地方你从不使用它?

普遍的共识是,你应该只在必要的时候使用
这个
,而不是在其他任何时候

private String param;
public Construct(String param) {
  // Usually the only place you need to use this.
  this.param = param;
}

// A less common use of this
public Function() {
  synchronized(this) {
    // Some synchronized stuff.
  }
}

代码中有些地方不能跳过此关键字,例如setter:

public void setValue(String value) {
    this.value = value;
}
但如果可能,最好跳过:

public String getValue() {
    return value;
}

一般来说,您应该避免出现冗余语法。你会读到很多相反的观点,主要是指一个完全虚构的程序员,他不知道成员变量,不知道括号是什么,也不记得他在三年级时学过的运算符优先级规则。我40年没见过他了。假设他(a)不理解代码,并(b)因此破坏代码,那么这还不足以证明为他修改代码是合理的。我从来没有见过这种情况发生


我所看到的是这样一个人编写的代码。这不是你为他隐瞒自己密码的理由。实际上有人甚至错误地重写了我的一段代码的情况有两种:一次是在1979年,有人重构了一个语法以删除运算符优先级,这是愚蠢的,他不应该这样做,另一次是在1992年左右,但在这两种情况下,我都无法编写语法或代码来阻止它。

作为一项规则,我倾向于不使用它-如果你能减少冗余代码,那就更好了

然而,我能想到的三个地方是,这个关键词无法避免的:

  • 构造函数(委托给同一类中的另一个构造函数)

  • 在当前对象上同步

    synchronized(this){

  • 将当前对象传递给另一个类

    public void methodOne() {
        anotherClass.doSomething(this);
    
有时在构造函数中需要它,其中字段名与参数相同,但这并不是必须的,因为您可以简单地重命名参数:

public MyClass(String data) {
    this.data = data
除此之外,我想不出有多少其他情况下我会使用
this
关键字。我看到它被过度使用(在每个方法和字段引用中),这会使代码很难阅读


只有当你必须使用它时,或者当你认为它可以提高代码可读性时,才使用它。

这一直是困扰我的问题。一般来说,尽量避免使用它,但是很多人用以
m
开头的名称来调用实例属性/成员,以提醒你它是实例成员……为什么不干脆离开呢拿出
m
然后做
这个。成员名
?@Bakuriu责备匈牙利人!我相信这是整个“黑客都很懒”贯穿历史的motif。因为m_theMemberName比this短。theMemberName,他们倾向于前者。我喜欢在将同一类的对象作为参数的方法中使用
this
,例如
equals()
compareTo()
我只是在看一些遗留代码,其中有12个不必要和不适当的用法。在一个文件中。我已经担心可读性和代码质量。不要使用它。除非在少数情况下它是有保证的!!实际上,您可以简单地为参数使用其他名称,因为在Java中没有关键字参数和参数因此,这不会改变API。
public MyClass(String data) {
    this.data = data