为啥是更好的
在一个大型的软件项目中,你不能保证所有的代码都是由你一个人编写,即使都是自己编写,你也很难保证所写的每一行代码都格式统一。所以这里往往需要一个可以自动格式化代码的工具,以便让你自己的或者其他人写的代码看起来排版整洁,赏心悦目。
xcode是开发Apple生态环境下各种软件的必备工具,但是这个工具的辅助功能相对与Eclipse之类的IDE来说,还是比较少。我甚至更进一步认为这玩意是Apple雇的几个大学实习生做出来的玩意,经常失去响应啊,变成一个僵死进程。对于格式化代码这个现在要说的功能,写java用过Eclipse的人都知道可以导入代码格式文件来实现可以定制的代码排版功能。而在xcode里,只有通过Re-Indent这一个调整缩进的功能,显然不够用。
Uncrustify
什么是Uncrustify呢?用官方主页上的一句话来定义就是:
a highly configurable,easily modifiable source code beautifier.
翻译过来大概意思就是一个高度可定制可修改的代码美化器。按照这个工具的方法有很多种,这里推荐使用Homebrew,熟悉Apple历史的人都知道,最早的Apple I就是在家酿电脑俱乐部诞生的,HomeBrew当时就是家醸电脑俱乐部的意思。安装方式在官方主页的最下面,运行一条ruby指令:
ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)
安装好Homebrew后,用这条命令按照Uncrustify
brew install uncrustify
详细的Automate配置步骤可以参考这篇文章,如果不想自己配置可以下载已经配置好的workflow,复制到~/Library/Services/,并解压就可以了,如果你的电脑里面没有这个文件夹,可以自己通过mkdir指令来新建这个文件夹:
mkdir ~/Library/Services
mv Uncrustify-Objective-C.workflow.tar.gz ~/Library/Services/
cd ~/Library/Services/
tar zxvf Uncrustify-Objective-C.workflow.tar.gz
下载针对Objective-C语言的配置文件,移动道~/目录下,并更名为.uncrustify_obj_c.cfg,注意目标文件名前面有个.,正常情况下你通过finder是看不到这个文件夹的,可以通过如下指令来显示:
defaults write com.apple.finder AppleShowAllFiles TRUE
killall Finder
集成xcode
如果上面已经完成,在xcode里面选择一段代码,右键选择Services里面应该可以看到Uncrustify Objective-C选项了。选择后,就可以格式化所选的代码。如果你觉得不烦烦的话,每次都可以选中后进行以上操作,但是必然有不那么蛋疼的方式。
点屏幕左上角的苹果图标,选 System Preferences – Keyboard – Keyboard Shortcuts – Services,在Text分区里,找到刚添加的服务Uncrustify Objective-C,给这个服务加上快捷键。注意不要和Xcode里其它快捷键冲突,推荐设置为:control+shift+f貌似是Eclipse格式化的快捷键,好吧我又穿越了。
one more thing
大家如果有兴趣可以去研究下那个cfg文件的配置,里面决定了代码排版的行为,详细到函数签名和小括号之间是否应该空格都可以自由选择。配置变量名里面含有oc的是针对objectiec-c语言的特别情况,其他应该是所有语言通用的。