忘不了的 TODOS & FIXMES & ERRORS

bglogo

你們好,我是泰戈爾,一個集美貌與智慧於一身的美男子。今晚大萌魚出去團建了,喝了點酒已經沒有意識了。今晚的文章也就只能由我來操刀了。shell

又是一個暴風大雨的日子,美股的瀑布來得也比往常更猛烈了些。此情此景,我想吟詩一首:「瀑布就像藍天白雲,晴空萬里,忽然暴風雨,無處躲避,老是讓人,始料不及。」swift

在這麼一個暴雨的日子裏,大萌魚跟往常同樣編寫着代碼,改着bug,一切看似都很棒。就這那時,大萌魚發現了以前標記的一個 TODO:ui

//TODO: Temporary plan, refactor later
複製代碼

然鵝距離上次標記,時間過去了大半年,咱們的大萌魚早已把這個重構的事情拋之腦外,焦急的大萌魚撓了撓頭,心想:「這特麼就很尷尬了啊!」。這時候泰戈爾正好私聊過來拼夕夕瀑布的事,因而大萌魚就把剛纔困惑告訴了泰戈爾。spa

1-1

通常在咱們編寫代碼時,有時候須要標記什麼地方待作的,什麼地方須要修復的,咱們如今可能沒時間修改,那就須要標記一下,以便之後查閱修改。3d

Xcode也給咱們提供了三種實用的簡易標記,即 MARKTODOFIXME,如今這些在 Objective-C 或者 Swift 環境下都是能夠使用的。須要注意的是 MARKTODOFIXME 均必須大寫,Xcode將會在代碼中尋找這樣的註釋,而後以粗體標籤的形式將名稱顯示在導航欄,就如同咱們會用 「#pragma mark -」 符號來標記代碼區間同樣的道理。code

MARKTODOFIXME用法以下:cdn

//TODO: 標記未來要完成的內容
//MARK: 標記一件事情
//FIXME: 標記之後要修正或完善的內容
複製代碼

效果以下:blog

此外還有如下一種標記,Xcode 也是支持的:ip

// ???:  疑問的地方
/// !!!: 須要注意的地方
複製代碼

然鵝,只是有上面的粗體標籤標記的話是遠遠不夠的,在沒有⚠️或者❌的提示狀況下,開發者很容易就會把以前的標記給忘掉,就跟咱們的大萌魚同樣。開發

那麼怎麼實現添加自定義的標識,並在編譯時,在 warning 或者 error 中顯示出來呢?答案就是在 run script build phases 中添加一段 shell 腳本:

  1. 切換到 target-->build phases-->editor-->add run script build phases

  1. 把下面的代碼粘貼到 shell 框中
TAGS="TODO:|FIXME:|WARNING:"
ERRORTAG="ERROR:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" -or -name "*.swift" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($TAGS).*\$|($ERRORTAG).*\$" | perl -p -e "s/($TAGS)/ warning: \$1/"| perl -p -e "s/($ERRORTAG)/ error: \$1/"
複製代碼

設置完 shell 腳本後,編譯代碼,WARNINGTODOFIXME 就會出現相應的⚠️,而 ERROR 就會被當錯編譯❌來處理。

有些人會問了,費這麼老大勁,爲何不直接用 #warning 來標記呢?這就仁者見仁,智者見智了。仔細觀察下面圖中的區別,你就能發現其中的奧妙。

另外在團隊協做開發的過程當中,對於有些開發者來講,⚠️對他們來講是零容忍的,若是頻繁使用 #warning,會狠狠的刺痛他們的心扉~

1-2

相關文章
相關標籤/搜索