<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          成為一名優(yōu)秀 Swift 開發(fā)人員的 10 個小技巧

          共 2786字,需瀏覽 6分鐘

           ·

          2021-06-15 10:00

          ????關注后回復 “進群” ,拉你進程序員交流群????


          作者 | Ivano Di Gese
          來源 | Medium Better Programming

          https://medium.com/better-programming/10-tips-to-be-a-good-swift-developer-7860c1e67337

          在編寫 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)盤了,歡迎下載!

          點擊??卡片,關注后回復【面試題】即可獲取

          在看點這里好文分享給更多人↓↓

          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产插逼网 | 牛牛精品一区二区 | 黄色在线免费在线免费 | 亚洲日本本土视频欧美 | 国产精品久久久久久久猫咪 |