當我們談 XML 布局文件代碼的優雅性
當我們談代碼的優雅性,是不可以忽略經常在打交道的 Android XML 布局文件的書寫。有人會問,XML 文件內容有什么優雅不優雅的,不都是隨便寫嗎?嗯,是有很多人,根本就沒有意識到或者不關心布局文件內容應該怎么寫更好看,更漂亮。我覺得,優雅的 Android XML 布局文件的內容,應該做到以下幾點:
- 不能有多余的空行;
- 不要保留你注釋掉的代碼(要回溯我們有 git);
- 盡量避免 hard code(硬編碼);
- 能復用的資源盡量抽出到對應的 value 文件;
- 盡量消除警告、單詞拼寫錯誤;
- 不要使用廢棄的關鍵詞,如 fill_parent、dip;
- 屬性條目要有序;
其中,本文特別想講的就是最后一條,“屬性條目要有序”,屬性條目指的是,比如一個 ImageView 節點下的 android:id, android:layout_width, android:paddingLeft, android:src … 等等這些。大部分人在書寫 Android XML 布局文件的時候,都是想到一個要設置的屬性,就隨意在原有的屬性們之下一行,再加上一行新屬性,這樣導致諸如 android:id 有時會在最后一行,有時在一堆屬性中間,不僅不利于我們在需要 id 的時候,肉眼查找閱讀,也會使得整個 XML 文件內容沒有規則,很凌亂。
所以我大致是給自己定了一個規則,就是 style 必須排第一個,緊接著 visibility、id,然后是一堆 layout 屬性,再然后是內邊距 padding 屬性,而一些值設定,比如 color、text、background、src … 我則規定它們必須處于最底下,這樣在查看值的時候,只要著眼于最底下就可以找到目標屬性和它的設定值了。
我們可以看一份隨意書寫的 XML 文件和按照一定順序規則書寫的 XML 文件內容對比:
上圖中,左邊是隨意書寫、亂序的,右圖則是按照一定順序規則有序的,相比之下,我想應該都會覺得右圖看起來舒服許多,而且益處應該也是比較明顯的。
為了優雅性,以前我都是手動進行排序,id 手動寫前頭,text 手動寫在末尾,直到最近,因為與人協作,不得不面對大量遺留下來的左圖式的 XML 文件,忽然想起可以寫一個 Idea/AndroidStudio 插件來自動化格式化這些文件內容。于是下載了 Idea 社區版,查看了幾下官方文檔和一個小示例,就摸索著寫起了,最終完成了本文想要推薦 LayoutFormatter.
這是我開發并且完全開源的一個 Idea/AndroidStudio 插件,通過 右鍵 -> Refactor -> Reformat Layout XML. 即可一鍵格式化你的 XML 文件,甚至可以一鍵格式化你整個項目或某個文件夾下的所有 XML 文件:
https://github.com/drakeet/LayoutFormatter
最近它的更新:
- 調整了格式化 Action 的位置到 “右鍵 -> Refactor -> Reformat Layout XML.”;
- 支持 撤銷;
- 支持 對非 XML 文件進行過濾;
- 支持 默認快捷鍵;
- 支持 一鍵對整個項目或某個文件夾下的所有 XML 文件進行格式化;
- 修復 許多問題,但暫時還因為換行符不一樣,不支持 Windows 系統;
- 支持 自動把 fill_parent 轉為 match_parent,把 dip 轉成 dp.
希望你能喜歡并享受它 ^ ^
來自:drakeet