圖解 Android Studio 技巧:玩轉 TODO 及自定義 TODO">圖解 Android Studio 技巧:玩轉 TODO 及自定義 TODO

分類:IT技術 時間:2017-08-14

關註並回復 [ 加群 ],

邀請你進android技術群

類別: 工具效率

讀完約需

5

分鐘

用心原創,你的  點贊|轉發分享 是對我最大的鼓勵,關註以及時獲取最新推文。

在開始之前,我們先來看看開發過程中,面對以前寫的代碼常會碰到的問題:

  • 這塊代碼好幾次用到了,應該抽出去;

  • 這個算法可以換個更高效的寫法;

  • 這段邏輯繞來繞去,其實可以換個思路。

  • ……

相信許多人都遇到過這些情況,那麽,此時我們該怎麽做呢?

呵,這還用問?

  • 重復代碼? 順手就抽出去了;

  • 算法效率堪憂? 你倒是優化啊;

  • 邏輯不清晰? 還不趕緊重構,等啥。

如果你是這麽想的,我覺得你肯定是沒體驗過牽一發而動全身的感覺(除非有足夠完善的單元測試),因為這麽做不僅容易引發不可預知的 bug,同時很有可能導致項目 delay。

要知道,大多數公司的開發周期都很緊,我們應該沿著主線任務推進,先保證新的需求實現了,主要功能能夠 work 並自測通過了,時間富余的情況下再去想著優化或者重構代碼。

你表示不服:說的倒好,時間富余再去優化。那要沒有富余時間呢,就不優化了? 不能這麽說,如果按照我說的先實現新需求、自測,再優化的步驟,你沒有富余時間去優化,說明啥?說明開發時間正好夠我們新增需求,那你要是在開發過程中提前去幹了優化的事,那需求還能做完嗎?

所以我們要搞清楚,對於這些問題,應該先標記著,等主線任務開發完了,再去優化。而不是擼起袖子就整,整不好就沒法收尾,甚至引發其它問題,我是認真的(有經驗的過來人自然懂)。

這裏提到的標記著以後再做,就涉及到我們今天要說的 TODO 的概念。 說了半天還沒開始,且息怒,之所以先鋪墊,是想讓一些沒有接觸過、或者剛接觸實際開發項目的同學,明白為什麽要像下文那麽做。

TODO 簡介

大家應該都用過記事或備忘軟件,或者是番茄記事之類的,一般這種軟件都有一個功能叫 “TODO List”,也就是待做清單。

我們在日常生活中,經常想起來要做一件事,但手頭正忙來不及做,就會先記在 “TODO List” 中,等忙完手頭的事或有時間了就去做。

開發中也是這樣,遇到像上面那些問題,我們應該先記下來:

  • 重復代碼? 先標記上,回頭抽出去;

  • 算法效率堪憂? 先標記上,回頭優化;

  • 邏輯不清晰? 先標記上,回頭重構。

這裏說的標記,並不是在記事軟件上記下來:標註上要做什麽,在哪個類哪一行,這太扯了。而是利用 Android Studio 提供的 TODO 功能來實現這一需求。

Android Studio TODO 用法

在 Android Studio 中,支持通過 TODO 在代碼中插入標記,其本質上就是特殊的註釋。只不過 TODO 註釋能夠在 Android Studio 提供的 TODO 視圖窗口中查看並快速定位。

1. 添加 TODO

很簡單,直接上圖:

當然,你也可以在方法內部對某一行代碼添加 TODO。

2. 查看 TODO

在 Android Studio 右下角中有一個 TODO tab,點擊即可打開 TODO 視圖,來查看項目中標記的 TODO:

如果沒有 TODO tab,你可以通過左上角的菜單打開,View -> Tool Windows -> TODO:

3. 完成並刪除 TODO

完成 TODO 標記的事件後,就可以刪除該 TODO 註釋。 理想狀態下,我們應該在每一版本發版前,完成所有 TODO,以保持 TODO 視圖中沒有遺留的事項,註意是理想狀態…

Android Studio FIXME 用法

除了 TODO 標記,我們還可以使用 Android Studio 提供的 FIXME 來標記一些待修復的問題,FIXME 與 TODO 在本質上沒有任何區別,只是不同的標記罷了。區別於 TODO 標記,FIXME 可以認為是偏向於標記存在問題的 TODO 事項。

一句話弄清二者區別: TODO 是總稱,FIXME 是細分

1. 添加 FIXME

其用法同 TODO,添加時如下:

然後同樣在 TODO 視圖中可以看到:

2. 篩選 FIXME

當項目中 TODO 和 FIXME 較多且混在一起時,找起來可就比較費盡了,此時我們可以使用 “過濾” 功能來區分開 TODO 和 FIXME。

首先,添加過濾 FIXME 的條件,點擊 TODO 窗口左側的漏鬥,選擇 Edit Filters,按照圖示添加 FIXME 過濾條件:

添加完畢後,再次點擊漏鬥,選擇剛才添加的 FIXME 過濾條件,在 TODO 視圖中將只會看到 FIXME 標記的 TDOO 事項:

最後,就是解決 FIXME 並刪除了,不再贅述。

自定義 TODO

一般我們習慣於直接用 TODO 來標記所有待辦事項,但上面說了 TODO 是總稱,比較廣義,當項目中有大量 TODO 時,你就會發現無法快速定位要找的 TODO,或者無法區分該 TODO 到底屬於哪種類型(雖然可以添加描述,但這個描述的作用太弱了,無法篩選)。

比如,在開發過程中,我們經常發現一些遺留代碼可以重構,此時我們不可能立即著手去做,應該通過 TODO 去標記:

// TODO: 2017/5/1 待重構

但是,這樣的 TODO 不容易識別,也無法篩選,後期只能通過附加的描述 “待重構” 去辨識,效率太低。此時,按照 FIXME 是 TODO 的細分的邏輯,我們不禁會問:

是不是可以自定義一個細分 TODO ,來標記重構呢?

答案是肯定的。

1. 自定義 TODO: REFACTOR

其實,TODO 的本質就是滿足特定正則的註釋,這樣說就好理解了。

通過右上角的菜單, File -> Settings -> Editor -> TODO 打開 TODO 設置面板,點擊右上方的 "+" 添加一個正則,如圖:

在 Pattern 中輸入正則表達式 \brefactor\b.*,然後選擇一個 Icon(可選),點擊 OK 關閉添加面板,再次點擊 OK 應用並關閉設置面板。

添加完 REFACTOR 類型的 TODO 之後,你迫不及待想試試,但發現不管怎樣系統都沒有智能提示以補全代碼,心想我在坑你。其實不然,要知道 TODO 標記 和 智能提示 是兩碼事。

你添加了一個自定義的 TODO 正則,系統匹配後將其視為 TODO,在代碼中高亮並顯示在 TODO 視圖中;而智能提示和自動補齊是 代碼模版 的功能。不是一回事,能理解吧?

你在代碼中純手敲一個 REFACTOR 的 TODO 也不是不可以,系統能識別,只不過這樣效率太低了。

// TODO: 2017/5/1 待重構

下面,跟隨我一起添加一個 REFACTOR 的代碼模版吧。

2. 添加 REFACTOR 代碼模版

通過右上角的菜單, File -> Settings -> Editor -> Live Templates 打開代碼模版設置頁面,找到 AndroidComments 並展開,你會發現熟悉的 fixme 和 todo,我們就仿著它們添加我們的代碼模版。不了解的同學可以點擊右下角 Help 簡單學習下,不影響理解後面的教程。

首先,點中 AndroidComments,點擊右上角 ”+“,選擇 Live Template :

然後,在下方出現的面板中填上對應內容,分別是:縮寫、描述、模版文本。

  • 縮寫 :我們在代碼中敲對應縮寫,就會出現智能提示;

  • 描述 :智能提示時的描述;

  • 模版文本 :縮寫對應的補齊後的文本(不局限於代碼),在這可以聲明變量;

此處我填寫內容如下:

如圖,在 模版文 本 中,我使用 data 聲明了日期變量,使用 todo 聲明了描述代辦的變量,變量是用來占位的。那這兩個變量到底如何賦值呢

註意右側的 Edit variables,即編輯變量。點擊該按鈕,打開 “Edit Template Variables” 面板。表格中,四列分別對應為:變量名稱、表達式、默認值、如果已定義則跳過。

具體的使用方法,同樣可點擊右下角的 Help 看一下,這不是本文的重點。看看我最後設置的值:

此處,我將 date 變量的表達式設為 date(),系統將會使用當前日期來填補該變量的占位,並勾選 “跳過” 選項,表示有值的話就不再自己編輯。

同時,對於 todo 變量,是用來添加描述的,無法使用固定表達式賦值,所以我選擇了賦予默認值 “待重構”,並且沒有勾選 “ 跳過”。這樣的話,系統會默認為我賦值 “待重構”,但我的光標還會定在那兒:我可以選擇繼續編輯,或者回車使用默認值。這塊不好理解的話一會看後面的 gif 動圖,就明白了。

編輯變量後,點擊 OK 返回上一頁,最後還需要定義該模版運用的上下文,也就是在哪些地方可以通過縮寫調出代碼模版。

在界面下方,有一段文本:No applicable contexs yet. 後面跟著一個 Define,點擊就會彈出模版運用上下文的列表。我們一般是在 Java 代碼中添加 REFACTOR TODO,所以全選 Java,當然你也可以按需選擇。

最後,最後,最後勾選右側的 Refactor according to style,表示自動格式化代碼(調整對齊、縮進等),最終效果是這樣的:

點擊右下角 OK,運用該模版並退出。

3. 在代碼中使用 REFACTOR TODO

至此,萬事俱備,只欠東風。在需要添加重構標識的地方,輸入 refactor,輸入過程中,智能提示就出來了,回車確認即可。

下面看演示,我輸入慢點,註意看上面提到的 默認值和跳過 選項,在代碼補齊時對 日期和描述 的影響:

區別於之前的 todo 和 fixme,自動補齊時加上了默認描述 ”待重構”,你可以繼續輸入覆蓋,或者直接回車確認。

和 TODO、FIXME 一樣,代碼高亮並出現在 TODO 視圖中:

同樣,你可以像過濾 FIXME 一樣來過濾 REFACTOR,不再貼圖演示。

總 結

我們從系統 TODO 開始,分析了 FIXME 與 TODO 的關系,進而想出自定義 TODO,即 REFACTOR。而自定義的 REFACTOR 除了要遵循 TODO 規則外,為了便於使用,我們需要添加 Live Template 以支持智能提示。

以上, 有關 TODO 用法及自定義 TODO 全部介紹完畢。 該技巧對於提升開發效率還是很有幫助,如果在設置過程中有任何問題,歡迎留言提出,或加群交流。

最後,附送高清美照一張,私人珍藏。

「攝於望京 SOHO」

iOS 用戶贊賞通道 [請備註姓名]

一個  有價值、有溫度 的公眾號

一位  愛分享、樂助人 的開發者

期待你的關註並一起交流

感謝點贊或轉發分享

掃碼上車


Tags: 優化 富余 時間 開發 我們 需求

文章來源:


ads
ads

相關文章
ads

相關文章

ad