忘不了的 TODOS & FIXMES & ERRORS

TipsTrick發表於2018-08-29

bglogo

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

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

在這麼一個暴雨的日子裡,大萌魚跟往常一樣編寫著程式碼,改著bug,一切看似都很棒。就這那時,大萌魚發現了之前標記的一個 TODO:

//TODO: Temporary plan, refactor later
複製程式碼

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

1-1

一般在我們編寫程式碼時,有時候需要標記什麼地方待做的,什麼地方需要修復的,我們現在可能沒時間修改,那就需要標記一下,以便以後查閱修改。

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

MARKTODOFIXME用法如下:

//TODO: 標記將來要完成的內容
//MARK: 標記一件事情
//FIXME: 標記以後要修正或完善的內容
複製程式碼

效果如下:

忘不了的 TODOS & FIXMES & ERRORS

此外還有以下一種標記,Xcode 也是支援的:

// ???:  疑問的地方
/// !!!: 需要注意的地方
複製程式碼

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

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

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

忘不了的 TODOS & FIXMES & ERRORS

  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/"
複製程式碼

忘不了的 TODOS & FIXMES & ERRORS

設定完 shell 指令碼後,編譯程式碼,WARNINGTODOFIXME 就會出現相應的⚠️,而 ERROR 就會被當錯編譯❌來處理。

忘不了的 TODOS & FIXMES & ERRORS

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

忘不了的 TODOS & FIXMES & ERRORS

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

1-2

忘不了的 TODOS & FIXMES & ERRORS

相關文章