2013-06-12 49 views
5

在我一直在工作的公司中,我已經看到很多使用前綴來指示變量的範圍或起源,例如m爲類成員,i爲方法實習變量,a(或p)爲方法參數:前綴變量名稱以指示其各自的範圍或來源?

public class User { 

    private String mUserName; 

    public String setUserName(final String aUserName) { 
     final String iUserName = "Mr " + aUserName; 
     mUserName = iUserName; 
    } 

} 

您怎麼看待它?它是否被推薦(或者確切地說不是)?我發現它在第一階段相當醜陋,但我使用它的次數越多,例如在處理大型方法時就越覺得它非常方便。

請注意,我不是在談論匈牙利符號,其中前綴表示類型而不是範圍。

+1

我不喜歡它,但也許它可以幫助他人審查代碼。順便說一句,Android Source中有很多mXXX。 – StarPinkER

+1

個人額外前綴信令數據類型會刺激我,尤其是當數據類型發生變化並且變量未被重構時。調試器會顯示數據類型。沒有什麼比虛假信息更糟。只要遵守常規的Java約定; CamelCase用於類名,thisCase用於函數名等 – Bathsheba

+0

我認爲在一個由2個以上程序員組成的團隊中,儘可能使每個變量儘可能容易理解是非常有用的。如果我自己編程,我不會使用它。 – TheOneAndOnly

回答

1

我也曾在有剛性前綴符號要求的商店工作過,但過了一段時間後,這變成了代碼已經失控並且全局變量從各處泄漏的「味道」,表明代碼/評審不佳。

Java的「這個」。表示法是引用某個字段的首選方式,而不是本地方法。這個「Micro」公司推廣使用「m」前綴作爲品牌噱頭(他們甚至說「不要因爲我們這樣做而使用它」)。

我遵循的一般規則是根據它用來存儲的內容命名變量。變量名稱只是一個別名。如果它存儲用戶名,那麼userName是有效的。如果它是用戶名的列表,那麼userNames或userNameList是有效的。然而,我現在避免在變量名中包含「類型」,因爲類型經常變化(實際上應該不是一組用戶名集合,等等......)

At一天結束時,如果變量名對於記住代碼在行進中的作用是有用的,這可能是一個好主意。可維護性和可讀性勝過「可感知」效率和簡潔語法,尤其是因爲現代編譯器根據宏使用模式重寫代碼。

我希望這會有所幫助,並很樂意提供有關此處的任何索賠的更多詳細信息。

ps。我強烈建議這些類型的問題的Java風格元素。我曾經與作者一起工作,他們是風格上的天才!