作为软件开发人员,我们常常会花大量时间去阅读代码。 Robert C. Martin 在他的Clean Code中说道:

Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code.

然而直接阅读整个代码库是不实际的,当你加入一个新项目,浏览一些开源库或着为一个大型代码库提交代码。搜索就会成为一个非常有用的工具,在这里我们将去深入了解隐藏在 Xcode 的导航器里的搜索。

1 : Patterns

直接在 Xcode 搜索文本是非常容易的,按下 Command-Shift-F 输入你想搜索的文本就可以了。而仅仅这样是不够的,当我们想要一个更高级的搜索,比如想要搜索一个包含 URLs 的字符串。这是很常见的需求,苹果也帮我们实现了这个功能即 – 通配符模式。

首先单击放大镜按钮旁边的下拉按钮,如下图:

Search Options

然后会看到一个下拉选择列表:

List of Available Patterns

点击列表中的 URL 模式搜索字段,就会得到想要的结果:

Strings Representing URLs

2 : Definitions

Xcode 还提供了搜索选项来帮助我们理解项目代码结构。比方说,想搜索到项目中所有带 shared 的定义,而且假设项目中所有的单例也是以 shared 开头,类似 shared*

如果仅仅搜索 shared,会得到很多结果:

Default Search Results

这当然不是我们想要的,点击 Text 切换选择到 Definitions 来缩小搜索结果:

Definitions Option

就像这样:

Search Results Narrowed to Definitions

得到了我们想要的结果,当然也可以使用这个去过滤结构体、枚举、枚举选项等等。

3: Search Scopes

选择一个经常要搜索的项目:

Scopes Menu

让我们想象一下,假如我们的项目是 Objective-C/Swift 代码混合的代码库。(它不是很难想象,对吧?😉)。这时我们想在 Swift 文件里搜索些东西,我们可以很容易的自定义搜索范围。点击 New Scope 按钮,选择搜索结果的过滤:Location, Name, Path, Path Extension and Type。Type 似乎是一个非常合适的选择,但不幸的是,这里没有 Swift :

No Swift here ¯\_(ツ)_/¯

所以,我们用 Path Extension 来替代,如:

Scope Filtering .swift Files

4: Call Hierarchy

Xcode 7中增加了一个新功能,可以直接搜索调用的层次结构。通过它,我们可以更直观的查看或使用方法和函数。我不经常使用它,但是当我用到它时会节省很多时间。

Call Hierarchy Search Example

在Xcode中 Find navigator 非常强大,它不仅仅只有搜索功能。当我们要找东西时,搜索并不总是最好的解决方法。例如,当我们要查看一些属性的定义时,最好的方法是将鼠标移动到属性上并按下 Command-Control-J 查看,这样比直接搜索它的定义要好得多。或者当我们想看看某些方法的调用情况,我们可以直接按下(Control-1)菜单来查看。

Related Items Menu

Conclusion

搜索在 Xcode 中变得越来越强大,它帮助我们更容易的阅读自己的代码或第三方代码。正如所有其他工具(或任何生活中)一样,它也带有一些权衡,但是我们可以选择使用最好的工具来工作。

作者:Arkadiusz Holko

原文链接:http://holko.pl/2016/04/26/xcode-search/

原文日期:26 Apr 2016