【iOS】iOS開發編碼規範小結
規範編碼可以提高程式碼的可讀性,降低維護成本。作為一個程式設計師,要對自己寫的程式碼負責,雖然bug無可避免,但是寫程式碼時最基本的編碼規則還是應該遵守的,否則不是坑自己就是坑別人,因為程式碼肯定是要維護的。
下面我主要講一下從建專案到開發寫程式碼時應該注意的一些地方和自己的一點建議。
- 專案名稱:專案名字的英文或者拼音全拼形式(如果比較長也可以選擇縮寫),建議每個單詞或者拼音的首字母都大寫。
- Bundle Identifier:唯一識別符號,最好包含公司的名字和專案名字,我一般用的格式為:www.公司名稱或縮寫.專案名稱.www,已經被別人在開發者證書中心註冊過的Bundle Identifier就無法再次新增到自己的證書中心,所以帶上公司名和專案名可以防止用了已經被佔用的Bundle Identifier。
- 目錄結構中的資料夾命名:在用xcode開發時,左邊的專案目錄結構用的比較多,也是一個很關鍵的地方,所以建議這裡的資料夾目錄能放的比較有層次,這樣在找程式碼和修改程式碼的時候方便。資料夾的名字應該與資料夾中所放程式碼的作用或者所屬模組相關聯,名字可用英文或者拼音縮寫,首字母大寫,中文也是可以用的,但是我個人不建議用中文,原因大家都懂。資料夾可以含多層,比如首頁模組的功能,第一層可以是Home資料夾,然後在這個裡面可以再細分檢視、資料、互動等。另外有些人也有習慣給程式碼中的資料夾加上統一的字首,這也是可以的,看上去也很舒服。
- 類名:建議帶上固定的字首和相應的字尾,在二者之間填上類所實現的功能。先來說固定的字首,比如說AFNetWorking,這個第三方庫,類名都是以AF開頭的,我們自己寫的類名也可以,這個字首可以用專案名字的首字母縮寫、公司名縮寫或者任何你喜歡的字母組成,加這個字首有兩個好處,一個專案目錄整齊,還有一個就是專案中的模組拿到別的專案中使用可以很大程度上降低類名相同而造成不能直接使用的概率。相應的字尾指的是此類所屬的型別,比如如果此類為ViewController的子類,那麼類名可以以ViewController或者簡寫成VC來結尾,這樣這個類是個ViewController還是個view一目瞭然。中間為此類要實現的功能相關是為了看類名就能知道這個類是幹什麼用的,比如MMHomeViewController這個類名,MM為專案名稱縮寫,Home代表首頁,ViewController表示該類為一個檢視控制器,一看這個類名就很容易知道這個類中寫的是首頁的實現的程式碼。有一些繼承自NSObject類的單例可以以Manager為字尾。類名首字母大寫。
- 成員變數:最最基本的應該見名知意,最好有變數對應的型別的字尾,首字母小寫。比如loginButton,這樣就很好理解,一看就知道這代表一個登入按鈕。成員變數是整個類都能用的,如果起名很隨意,程式碼理解起來可能比較困難。首字母小寫,遵守駝峰規則。
- 區域性變數:同上需要見名知意,雖然存在的範圍小,但是也很影響閱讀性,千萬不要取什麼arr1、arr2之類的,很難知道里面放的是什麼。首字母小寫,遵守駝峰規則。
- 代理/協議名:該協議對應的類的類名+Delegate/Protocol,首字母大寫。
- 方法名:每個引數前的英文塊首字母小寫,遵守駝峰規則。方法名以該方法所實現的功能為主,所需引數的引數名最好能帶上該引數的型別,這樣呼叫起來方便,看方法名可知在哪兒用,看引數名可知所需什麼引數。
- 註釋:在這裡特意加上註釋,其實並不是要談註釋的規範,而是想說,命名不會規範的程式設計師在寫程式碼的時候記得多寫點註釋,絕對沒壞處!!!
最後說一下自己的親身體驗,接手過一套程式碼,類名隨便取,很多繼承自ViewController的檢視控制器都以view結尾,變數名更不用說,看程式碼的時候還得靠猜這個變數裡面放的是什麼。記得印象比較深的是,在一個單例類中有一個type變數,看呼叫的地方挺多,有設定為1的,有設定為2的,也有拿來做判斷條件的,完全不知道這個值的意義是什麼。跟寫程式碼的人溝通,他自己也忘記掉了,也不知道用的地方為什麼那麼用。這只是印象比較深的一個,他唯一的說辭是他自己開發技術太菜。但是我覺得,編碼是否規範與技術水平高低關係不是很大,程式碼風格更多的是反映一個程式設計師的程式設計習慣的態度。實在不會規範,那就加註釋,簡單的註釋一下變數是用來幹嘛的等等。
程式設計技術水平有高低,但是認真的態度不該有差別,一個程式設計師可以寫不出很炫很酷很牛的程式碼,但是千萬不要隨意的寫出難以閱讀和維護的程式碼!
這些規範也是我自己的一些小總結,希望能給剛入門的一些人一點提醒和幫助。
相關文章
- iOS程式碼規範iOS
- 前端開發編碼規範前端
- 搜狐視訊iOS團隊 Objective-C 編碼規範iOSObject
- iOS開發規範篇:清晰的初始化方法iOS
- iOS開發小tipiOS
- iOS開發基礎篇--NSNotificationCenter使用小結iOS
- ios12設計規範iOS
- ios12設計規範(上)iOS
- iOS開發小技巧合集iOS
- web前端開發編碼規範及效能優化Web前端優化
- iOS開發UI篇--仿射變(CGAffineTransform)使用小結iOSUIORM
- 程式碼規範之前端編寫碼規範前端
- html編碼規範HTML
- Pear 編碼規範
- CSS編碼規範CSS
- Javascript編碼規範JavaScript
- python編碼規範Python
- stylus編碼規範
- iOS 小坑總結iOS
- iOS開發你不知道的事-編譯&連結iOS編譯
- iOS開發UI篇--iOS動畫(Core Animation)總結iOSUI動畫
- iOS開發經驗總結iOS
- iOS開發小記-基礎篇iOS
- 個人總結——全面的『Python編碼規範』Python
- iOS開發 iOS整合FFmpeg及視訊格式轉碼iOS
- web前端開發規範總結Web前端
- 常見編碼規範
- 前端安全編碼規範前端
- .Net編碼規範整理
- WEB前端編碼規範Web前端
- .Net Core 編碼規範
- iOS開發經驗總結2iOS
- iOS開發經驗總結3iOS
- iOS 開發iOS
- 測開入門篇《環境管理、編碼規範、專案結構》
- PHP編碼風格規範PHP
- Java語言編碼規範Java
- HTML編碼規範建議HTML
- [混編] iOS原生專案- iOS/flutter 程式碼互動iOSFlutter