作為軟件開發(fā)人員,我們常常會花大量時間去閱讀代碼糊识。 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.
然而直接閱讀整個代碼庫是不實(shí)際的,當(dāng)你加入一個新項(xiàng)目摔蓝,瀏覽一些開源庫或著為一個大型代碼庫提交代碼。搜索就會成為一個非常有用的工具愉耙,在這里我們將去深入了解隱藏在 Xcode 的導(dǎo)航器里的搜索贮尉。
1 : Patterns
直接在 Xcode 搜索文本是非常容易的,按下 Command-Shift-F 輸入你想搜索的文本就可以了朴沿。而僅僅這樣是不夠的猜谚,當(dāng)我們想要一個更高級的搜索,比如想要搜索一個包含 URLs 的字符串赌渣。這是很常見的需求魏铅,蘋果也幫我們實(shí)現(xiàn)了這個功能即 -- 通配符模式。
首先單擊放大鏡按鈕旁邊的下拉按鈕坚芜,如下圖:
然后會看到一個下拉選擇列表:
點(diǎn)擊列表中的 URL 模式搜索字段览芳,就會得到想要的結(jié)果:
2 : Definitions
Xcode 還提供了搜索選項(xiàng)來幫助我們理解項(xiàng)目代碼結(jié)構(gòu)。比方說鸿竖,想搜索到項(xiàng)目中所有帶 shared 的定義沧竟,而且假設(shè)項(xiàng)目中所有的單例也是以 shared
開頭,類似 shared*
缚忧。
如果僅僅搜索 shared
悟泵,會得到很多結(jié)果:
這當(dāng)然不是我們想要的,點(diǎn)擊 Text 切換選擇到 Definitions 來縮小搜索結(jié)果:
就像這樣:
得到了我們想要的結(jié)果闪水,當(dāng)然也可以使用這個去過濾結(jié)構(gòu)體糕非、枚舉、枚舉選項(xiàng)等等。
3: Search Scopes
選擇一個經(jīng)常要搜索的項(xiàng)目:
讓我們想象一下朽肥,假如我們的項(xiàng)目是 Objective-C/Swift 代碼混合的代碼庫禁筏。(它不是很難想象,對吧???)。這時我們想在 Swift 文件里搜索些東西鞠呈,我們可以很容易的自定義搜索范圍融师。點(diǎn)擊 New Scope 按鈕,選擇搜索結(jié)果的過濾:Location, Name, Path, Path Extension and Type蚁吝。Type 似乎是一個非常合適的選擇旱爆,但不幸的是,這里沒有 Swift :
所以窘茁,我們用 Path Extension 來替代怀伦,如:
4: Call Hierarchy
Xcode 7中增加了一個新功能,可以直接搜索調(diào)用的層次結(jié)構(gòu)山林。通過它房待,我們可以更直觀的查看或使用方法和函數(shù)。我不經(jīng)常使用它驼抹,但是當(dāng)我用到它時會節(jié)省很多時間桑孩。
When Not to Search
在Xcode中 Find navigator 非常強(qiáng)大,它不僅僅只有搜索功能框冀。當(dāng)我們要找東西時流椒,搜索并不總是最好的解決方法。例如明也,當(dāng)我們要查看一些屬性的定義時宣虾,最好的方法是將鼠標(biāo)移動到屬性上并按下 Command-Control-J 查看,這樣比直接搜索它的定義要好得多温数⌒逑酰或者當(dāng)我們想看看某些方法的調(diào)用情況,我們可以直接按下(Control-1)菜單來查看撑刺。
Conclusion
搜索在 Xcode 中變得越來越強(qiáng)大鹉胖,它幫助我們更容易的閱讀自己的代碼或第三方代碼。正如所有其他工具(或任何生活中)一樣够傍,它也帶有一些權(quán)衡次员,但是我們可以選擇使用最好的工具來工作。
作者:Arkadiusz Holko
原文鏈接:http://holko.pl/2016/04/26/xcode-search/
原文日期:26 Apr 2016