2010-11-02 64 views
3

「this」引用當前類中的實例變量是否可以接受?在PHP中,這是你必須這樣做的,但是我注意到在Java中你可以直接調用這個變量。Java類中的「this」的常規用法引用實例變量

我個人發現「this.variable」更容易理解,但如果不正常,我不想開發不好的編碼習慣。

謝謝!

public class MyClass { 

    /** 
    * Private variable 
    */ 
    private int myInt; 

    /** 
    * Setter method 
    */ 
    public void setMyInt(int value) { 
     this.myInt = value; 
    } 
} 
+0

可接受性嚴格依賴於您的樣式指導原則,因爲完全相同的代碼是以任何方式生成的。有些需要它,有些則不允許,並且很可能不關心。 – Gabe 2010-11-02 05:48:59

回答

7

就像人們一直在說的那樣,它不是必需的,但它是可以接受的。

話雖這麼說,這是必要的,如果你正在做這樣的事情:

private int value; 

public void setValue(int value) { 
    this.value = value; 
} 

類變量,並使用相同的名稱,參數之間的區分哪。我發現自己在我製作的幾乎每個製作人中都使用這種模式,而且大約是我使用「this」關鍵字的唯一時間。

1

這是Java完全可以接受的做法,儘管它不是必需的(如你所提到的)。

0

使用它或不,僅在整個代碼庫中保持一致。如果變量被屏蔽(通過參數或本地方法變量),您必須使用它

0

除非您的工作場所或項目有風格指南,否則明確禁止以這種方式使用this,重做是完美的。我個人僅在需要時才使用this(例如,當我使用同名的方法參數初始化實例變量時),但我已經看到很多代碼總是使用this來引用成員。它可能更具可讀性,而且它的可讀性也不會太差,所以去做吧!

1

我會寫你這樣的代碼:

public class MyClass { 

    private int myInt; 

    public void setMyInt(int myInt) { 
    this.myInt = myInt; 
    } 
} 

的差異你的是(去掉無用的Javadoc旁),在我的代碼中的參數具有相同的名稱成員變量。其他用戶更喜歡賦予成員變量與參數不同的名稱,但由於視覺平衡,我們寧願在必要時將成員變量前綴this.加在一起。在使用這個標準的Java編程超過10年的時間裏,我們從未有過使用錯誤變量導致的錯誤。

+0

我想我會選擇傾向於使用不同名稱的陣營,因爲它可以幫助我理解我的設置。對於多餘的文檔抱歉。 – james 2010-11-02 05:56:33

+1

如果一個方法有多個參數,你如何命名參數? 'value1','value2','value3',...?另一種方法是用一些前綴(或後綴)參數或成員變量。但是,爲什麼發現一個新的前綴,如果已經有一個 - 「this.'? – Mot 2010-11-02 06:01:59