成為一名優(yōu)秀 Swift 開發(fā)人員的 10 個小技巧
作者 | Ivano Di Gese
來源 | Medium Better Programming
在編寫 iOS 代碼時,有一些關鍵點可以讓我們的代碼更具可讀性、高效和可維護。Swift 是一種現(xiàn)代語言,支持許多現(xiàn)代編程概念,同時保持代碼的簡潔。
如果你想改進 Swift 代碼,可以參考一下以下幾點建議。
1. 使用 Protocol
Protocol 在 Swift 中可以做很多事情。使用協(xié)議,我們可以設計軟件組件的行為,使其符合特定的實現(xiàn)。Swift 協(xié)議類似于 Java 中的接口,這是 OOP 編程中最基礎的理論。
以下是使用協(xié)議的一些場景:
讓 modal 與呈現(xiàn)它的組件進行通信;
讓多個 UIViewController 或 多個 Cocoa Touch 類實現(xiàn)相同的行為;
在 UITableCell 向父 UIViewControllers 發(fā)送事件;
這是我們在 iOS 編碼過程中最常見的一些場景。
2. 重構并提高可性
Xcode 11 對重構功能做了很大的改進。新的 Xcode 的重構操作更加簡潔,讓我們可以很容易重命名類、引用和方法。我已不記得有多少次我認為一個名稱是合適的,而后來又決定修改。之前的 Xcode 在這方面做得并不好,但從 Xcode 11 開始,這個操作變得更可靠了。
3. 使用標記
從 Objective-C 開始,我就一直很喜歡標記。當控制器有成百上千行代碼時,標記就顯得很重要了。使用標簽來分割和管理代碼非常重要,可以在代碼中快速導航。Xcode 11 在右側(cè)有一個代碼導航器,基于此可以更頻繁地使用標記。
4. 首先代碼來實現(xiàn)導航,而不是 Storyboard
Storyboard 很好,自從 Apple 推出后,我就一直使用。但是,當應用程序開始增長,需要處理數(shù)十個 ViewController 時,使用代碼來管理和處理導航比使用 Segues 和 Storyboards 更加便捷。此外,通過代碼導航可以在導航時更好地控制共享參數(shù)和特定行為。還可以避免讓 Storyboard 變得一團糟。
5. 在項目中集成最熱門的第三方庫
盡量不要重新發(fā)明輪子。為項目選擇正確的庫是一項有意思的工作,大多數(shù)情況下,使用基本庫就正確的做法。這可以讓你專注于特定應用程序的特定功能,而不是在常見的功能上浪費時間。我經(jīng)常會用到以下庫:
HTTP 層:使用 Alamofire;
圖像處理庫:使用 Alamofire image 或 Kingfisher;
自動布局輔助庫,如 Snapkit;
UI 工具,如 HUD、masonry CollectionView layouts、顏色可漸變庫之類的;
更重要的是,保持 Pod 的更新,以避免使用低版本產(chǎn)生的錯誤。
6. 使用擴展并合理使用它們來創(chuàng)建公共庫
我很喜歡 Swift 擴展。在使用 Objective-C 時,我總是不情愿地使用繼承。當然這并不總是錯誤的,正確的使用子類也不會出錯。但是 Swift 擴展可以輕松地將簡單方法集成到通用類上,而無需做任何復雜的事情。如何還不夠的話,在 @IBDesignable 你甚至可以支持 Storyboards 的擴展,它有很多擴展集合,我喜歡編寫簡短的方法來擴展字符串、按鈕等以完成簡單的任務。擴展很棒,你可能會過渡使用它。不過沒關系,將擴展組織到單獨的文件中,保持可讀性就行了。
7. 盡可能使用容器視圖
隨著 UI 越來越復雜,我們通常必須集成 Tab、滑動布局,Page 等內(nèi)容。容器視圖通常不是現(xiàn)成的,需要花一些時間編碼,但這絕對是值得的,我們最終總是可以復用這些控制器。
8. 保證 UI 關鍵組件可見并在頂部輸入
有時界面會很有挑戰(zhàn)性,特別是在集成了許多功能的應用程序上。幸運的是,我有一位 UI/UX 專家與我一起工作,為我提供了很多有關如何正確操作的建議。但作為開發(fā)人員,需要記住兩點:
首先,不要讓導航過于復雜,除非有簡單的方法可以返回主頁可撤消操作,否則不要在模態(tài)上再展示模態(tài),也不要在 UINavigationController 上 push 多個組件。使用 UITabBarControllers、抽屜和類似的方法來簡化操作。
其次,盡可能選擇在屏幕上方輸入。用戶可能被迫伸出手來操作它,但是最好實現(xiàn) UIScrollView 并處理滾動操作以避免鍵盤覆蓋輸入內(nèi)容。
9.使用通知
通知中心是在組件之間分發(fā)消息的好工具。在開發(fā)文檔中,通知是在控制器與模型或服務之間實施通信可同步模式的正確方法,我在項目中經(jīng)常使用 Notification Center,基本上實現(xiàn)了觀察者模式,并讓應用程序帶有更多響應式的元素。
可以使用觀察者模式實現(xiàn)許多關鍵功能,我發(fā)現(xiàn)它非常有用。該方法非常簡單,且大多數(shù)操作都可以用一行代碼進行編碼,使用 target 和 user info 來傳遞所有數(shù)據(jù)。一個重要的建議是:需要在 deinit 或 viewWillDisappear 方法中刪除未使用和不必要的觀察者,以避免內(nèi)容泄漏和重載。
10. 事件操作中 sender 參數(shù)非常有用
最后一個技巧是使用 sender 參數(shù)。每個響應事件的方法或選擇器都可以知道是誰觸發(fā)了事件。在常見情況下,請考慮這樣一個場景,使用具有相似行為的多個按鈕,來處理相同的操作。只需要將所有 UIButton 連接到相同的 @IBAction,然后使用發(fā)送方找出觸發(fā)了該事件中的哪一個,并為該特定行為編寫正確的實現(xiàn)即可。此外,在 UI 元素上使用 tag 來標識它們,而不是使用其標題或其它內(nèi)容來區(qū)分。
結(jié)論
我沒有提到所有基本的 OOP 原則。顯然,您必須以正確的方式實現(xiàn)類,封裝,抽象和設計模式。在本文中,我將重點更多地放在Swift功能上,以提高代碼效率并傳遞Swift機制的優(yōu)點。我提供了一些簡單的示例,說明每個iOS應用程序和開發(fā)人員應關注的重點。
-End-
最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

面試題】即可獲取