標籤:
說明 這不是一篇技術文章,而是因為最近項目新來了幾個android新人,所以我琢磨在代碼風格上進行一下統一,所以有了以下以及後面的幾篇文章。 java檔案內部UI組件變數組織 UI組件使用小寫字母“v”作為首碼。
v主要表示“View”,android源碼中,變數首碼主要是“m”,但是個人覺得對於UI變數,還是用“v”比較清晰
意圖導向,最小化抽象
UI變數的“宣告類型”應該是能夠實現意圖的最小化抽象類別型,變數名需要能表現出一個組件的功能。
比如,互動需求有一個ImageButton,點擊之後的動作是觸發一個搜尋請求。應該怎麼組織變數呢?
第一步:宣告類型
聲明這個變數大概有幾種方式:
1. private ImageButton varName;2. private ImageView varName;3. private View varName;
這些聲明都沒有什麼問題,問題是如果這個按鈕只是單純的觸發一個點擊事件,
那麼也就表明我們的意圖只需要使用View層級就行,因為View.setOnClickListener(OnClickListener)是我們唯一關心的功能,所以只需要將類型限定在View層級就行。
另外,UI是一個變化頻度比較高的部分,越抽象就越容易修改。
換句話說,就是“面向介面編程”,View在這裡就充當了介面的角色,這樣,不管以後我們把ImageButton換成ImageView,Button或者TextView都不用修改定義的。
第二步:變數名
變數命名可能有下面幾種:
1.
ImageButton vImageButton1
這種命名只應該出現在教程代碼中,項目代碼中是絕對不應該出現的
2.
ImageButton vQueryImageButton(或者vQueryBtn)
這個命名其實可以接受,但是一個問題就是,變數名涉及到具體的組件類型,參照上面第一步的說明,如果並不會使用到“ImageButton”特定的方法,就沒有必要過於具體化一個變數。
3.
ImageButton vSearch
這個命名其實也可以接受,而且也比較適用。
4.
ImageButton vSearchAction
相比上面的vSearch,個人還是比較偏向於這種命名。
雖然都是純粹的意圖相關,但一個問題就是完成某個意圖可能需要幾個組件配合,比如對於搜尋來說,一般還會有一個輸入框,這時候就可以將輸入框命名為vSearchContent,這樣可以使用尾碼“Action”和“Content”將兩個部分區分開來
XML內部組件id命名
xml檔案中的id命名也是一樣,需要提供給java檔案使用的盡量意圖導線。
比如RelativeLayout命名中沒有必要含有完整的“RelativeLayout”欄位,因為實際項目中,需要調用RelativeLayout特定方法的情況基本沒有。所以使用container等更泛的名字也可以。
至於只在布局檔案中用來進行定位或者錨點的組件,可以將id命名得更明顯一下,比如使用local,anchor之類名字,以便告訴java代碼不應該隨意擷取這些組件,因為這些id並非穩定欄位。
Android分享 Q群:315658668
【Android】UI組件變數組織