忘不了的 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

相关文章
相关标签/搜索