1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 2786字,需瀏覽 6分鐘

         ·

        2021-06-15 10:00

        ????關(guān)注后回復(fù) “進(jìn)群” ,拉你進(jìn)程序員交流群????


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

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

        在編寫 iOS 代碼時(shí),有一些關(guān)鍵點(diǎn)可以讓我們的代碼更具可讀性、高效和可維護(hù)。Swift 是一種現(xiàn)代語言,支持許多現(xiàn)代編程概念,同時(shí)保持代碼的簡(jiǎn)潔。

        如果你想改進(jìn) Swift 代碼,可以參考一下以下幾點(diǎn)建議。

        1. 使用 Protocol

        Protocol 在 Swift 中可以做很多事情。使用協(xié)議,我們可以設(shè)計(jì)軟件組件的行為,使其符合特定的實(shí)現(xiàn)。Swift 協(xié)議類似于 Java 中的接口,這是 OOP 編程中最基礎(chǔ)的理論。

        以下是使用協(xié)議的一些場(chǎng)景:

        • 讓 modal 與呈現(xiàn)它的組件進(jìn)行通信;

        • 讓多個(gè) UIViewController 或 多個(gè) Cocoa Touch 類實(shí)現(xiàn)相同的行為;

        • 在 UITableCell 向父 UIViewControllers 發(fā)送事件;

        這是我們?cè)?iOS 編碼過程中最常見的一些場(chǎng)景。

        2. 重構(gòu)并提高可性

        Xcode 11 對(duì)重構(gòu)功能做了很大的改進(jìn)。新的 Xcode 的重構(gòu)操作更加簡(jiǎn)潔,讓我們可以很容易重命名類、引用和方法。我已不記得有多少次我認(rèn)為一個(gè)名稱是合適的,而后來又決定修改。之前的 Xcode 在這方面做得并不好,但從 Xcode 11 開始,這個(gè)操作變得更可靠了。

        3. 使用標(biāo)記

        從 Objective-C 開始,我就一直很喜歡標(biāo)記。當(dāng)控制器有成百上千行代碼時(shí),標(biāo)記就顯得很重要了。使用標(biāo)簽來分割和管理代碼非常重要,可以在代碼中快速導(dǎo)航。Xcode 11 在右側(cè)有一個(gè)代碼導(dǎo)航器,基于此可以更頻繁地使用標(biāo)記。

        4. 首先代碼來實(shí)現(xiàn)導(dǎo)航,而不是 Storyboard

        Storyboard 很好,自從 Apple 推出后,我就一直使用。但是,當(dāng)應(yīng)用程序開始增長(zhǎng),需要處理數(shù)十個(gè) ViewController 時(shí),使用代碼來管理和處理導(dǎo)航比使用 Segues 和 Storyboards 更加便捷。此外,通過代碼導(dǎo)航可以在導(dǎo)航時(shí)更好地控制共享參數(shù)和特定行為。還可以避免讓 Storyboard 變得一團(tuán)糟。

        5. 在項(xiàng)目中集成最熱門的第三方庫

        盡量不要重新發(fā)明輪子。為項(xiàng)目選擇正確的庫是一項(xiàng)有意思的工作,大多數(shù)情況下,使用基本庫就正確的做法。這可以讓你專注于特定應(yīng)用程序的特定功能,而不是在常見的功能上浪費(fèi)時(shí)間。我經(jīng)常會(huì)用到以下庫:

        • HTTP 層:使用 Alamofire;

        • 圖像處理庫:使用 Alamofire image 或 Kingfisher;

        • 自動(dòng)布局輔助庫,如 Snapkit;

        • UI 工具,如 HUD、masonry CollectionView layouts、顏色可漸變庫之類的;

        更重要的是,保持 Pod 的更新,以避免使用低版本產(chǎn)生的錯(cuò)誤。

        6. 使用擴(kuò)展并合理使用它們來創(chuàng)建公共庫

        我很喜歡 Swift 擴(kuò)展。在使用 Objective-C 時(shí),我總是不情愿地使用繼承。當(dāng)然這并不總是錯(cuò)誤的,正確的使用子類也不會(huì)出錯(cuò)。但是 Swift 擴(kuò)展可以輕松地將簡(jiǎn)單方法集成到通用類上,而無需做任何復(fù)雜的事情。如何還不夠的話,在 @IBDesignable 你甚至可以支持 Storyboards 的擴(kuò)展,它有很多擴(kuò)展集合,我喜歡編寫簡(jiǎn)短的方法來擴(kuò)展字符串、按鈕等以完成簡(jiǎn)單的任務(wù)。擴(kuò)展很棒,你可能會(huì)過渡使用它。不過沒關(guān)系,將擴(kuò)展組織到單獨(dú)的文件中,保持可讀性就行了。

        7. 盡可能使用容器視圖

        隨著 UI 越來越復(fù)雜,我們通常必須集成 Tab、滑動(dòng)布局,Page 等內(nèi)容。容器視圖通常不是現(xiàn)成的,需要花一些時(shí)間編碼,但這絕對(duì)是值得的,我們最終總是可以復(fù)用這些控制器。

        8. 保證 UI 關(guān)鍵組件可見并在頂部輸入

        有時(shí)界面會(huì)很有挑戰(zhàn)性,特別是在集成了許多功能的應(yīng)用程序上。幸運(yùn)的是,我有一位 UI/UX 專家與我一起工作,為我提供了很多有關(guān)如何正確操作的建議。但作為開發(fā)人員,需要記住兩點(diǎn):

        • 首先,不要讓導(dǎo)航過于復(fù)雜,除非有簡(jiǎn)單的方法可以返回主頁可撤消操作,否則不要在模態(tài)上再展示模態(tài),也不要在 UINavigationController 上 push 多個(gè)組件。使用 UITabBarControllers、抽屜和類似的方法來簡(jiǎn)化操作。

        • 其次,盡可能選擇在屏幕上方輸入。用戶可能被迫伸出手來操作它,但是最好實(shí)現(xiàn) UIScrollView 并處理滾動(dòng)操作以避免鍵盤覆蓋輸入內(nèi)容。

        9.使用通知

        通知中心是在組件之間分發(fā)消息的好工具。在開發(fā)文檔中,通知是在控制器與模型或服務(wù)之間實(shí)施通信可同步模式的正確方法,我在項(xiàng)目中經(jīng)常使用 Notification Center,基本上實(shí)現(xiàn)了觀察者模式,并讓應(yīng)用程序帶有更多響應(yīng)式的元素。

        可以使用觀察者模式實(shí)現(xiàn)許多關(guān)鍵功能,我發(fā)現(xiàn)它非常有用。該方法非常簡(jiǎn)單,且大多數(shù)操作都可以用一行代碼進(jìn)行編碼,使用 target 和 user info 來傳遞所有數(shù)據(jù)。一個(gè)重要的建議是:需要在 deinit 或 viewWillDisappear 方法中刪除未使用和不必要的觀察者,以避免內(nèi)容泄漏和重載。

        10. 事件操作中 sender 參數(shù)非常有用

        最后一個(gè)技巧是使用 sender 參數(shù)。每個(gè)響應(yīng)事件的方法或選擇器都可以知道是誰觸發(fā)了事件。在常見情況下,請(qǐng)考慮這樣一個(gè)場(chǎng)景,使用具有相似行為的多個(gè)按鈕,來處理相同的操作。只需要將所有 UIButton 連接到相同的 @IBAction,然后使用發(fā)送方找出觸發(fā)了該事件中的哪一個(gè),并為該特定行為編寫正確的實(shí)現(xiàn)即可。此外,在 UI 元素上使用 tag 來標(biāo)識(shí)它們,而不是使用其標(biāo)題或其它內(nèi)容來區(qū)分。

        結(jié)論

        我沒有提到所有基本的 OOP 原則。顯然,您必須以正確的方式實(shí)現(xiàn)類,封裝,抽象和設(shè)計(jì)模式。在本文中,我將重點(diǎn)更多地放在Swift功能上,以提高代碼效率并傳遞Swift機(jī)制的優(yōu)點(diǎn)。我提供了一些簡(jiǎn)單的示例,說明每個(gè)iOS應(yīng)用程序和開發(fā)人員應(yīng)關(guān)注的重點(diǎn)。

        -End-

        最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網(wǎng)盤了,歡迎下載!

        點(diǎn)擊??卡片,關(guān)注后回復(fù)【面試題】即可獲取

        在看點(diǎn)這里好文分享給更多人↓↓

        瀏覽 61
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人视频在线观看18 | 色秘 乱码一区二区三区在 | 太粗大了潘金莲受不了乡村艳事 | 一区二区三区日韩免费 | 扒开小舞狂揉网站 | 成**人毛片www免费版在线 | 中国少妇野外bbbbb | jizz4国产精品 | 看又黄又爽视频网站 | 啊啊啊啊好大好深 |