前言
大家或許都有接手過別人的代碼,最大的共同感悟就是:這代碼寫得真爛L愦小!命令混亂锄列、文件隨意存放图云,xml文件中夾帶著中文,class中有class邻邮,activity中帶adapter等等竣况。單理清這個項目脈絡就要花上個一個星期。但反思自己筒严,是不是也曾是(甚至現(xiàn)在還是)自己心里痛罵過千遍的那個人丹泉,自己是不是也在犯著同樣的錯誤?最近在閱讀包老師的《APP啟示錄》里面第4章有提及命令規(guī)范和編碼規(guī)范鸭蛙,就抄錄到這里摹恨,方便自己查閱,也期望能給大家提供些許幫助娶视。
命名規(guī)范
1.Java類命名規(guī)范
? ? ?a.Activity命名規(guī)范:以Activity作為后綴晒哄,如:HomeActivity;
? ? ?b.Adapter命名規(guī)范:以Adapter作為后綴肪获,如:PersonAdapter寝凌;
? ? ?c.Entity命名規(guī)范:以Entity作為后綴,如:CustomerEntity;
2.資源文件命名規(guī)范
? ?layout目錄下的資源文件命名規(guī)范:
? ? ? a.頁面布局文件:以act_為前綴,以activity所在的package作為中綴孝赫,以activity名稱作為后綴(切除activity)较木。注意:全部都用小寫。如:act_activity_addcustomer.xml
? ? ? b.listView中的item布局文件:以item作為固定前綴青柄,列表項的名稱作為后綴伐债。注意:都是小寫。如:item_lv_userlist.xml
? ? ? c.dialog布局文件:以dig_作為前綴刹前,Dialog的功能名稱作為后綴泳赋,注意:都是小寫。如:dig_err_message.xml
? ? drawable目錄下的文件命名規(guī)范:
? ? ? ?a.對于只有一個頁面使用的資源:以該頁面的名稱作為前綴喇喉。
? ? ? ?b.對于在一個模塊下多個頁面使用的資源:以該模塊的名稱作為前綴祖今。
? ? ? ?c.對于在各個模塊、各個頁面都有可能用到的資源,以common作為前綴千诬。
? 3.Java類中控件對象的命名規(guī)范&Layout中控件對象的ID命名規(guī)范
? ? ?控件類型+控件的邏輯名稱(首字母大寫)耍目,如登錄按鈕:btnLogin.
? ?4.strings.xml中常量的命名規(guī)范
? ? 這里面的值大多數(shù)是在layout的控件上使用,所以以該常量所在的activity名稱作為前綴徐绑,后面接空間名稱邪驮,再后面就自由發(fā)揮了,如:loginActivity_btnLogin_text
? ? 5.常量命名
? ? 只能包含字母和下劃線傲茄,字母全部大寫毅访。
編碼規(guī)范
? ? 1.分門別類存放各種類:
? ? 2.layout中用到的常量,都要在strings.xml中定義盘榨。
? ? 3.layout中所有控件的字體大小喻粹,都定義在dimens.xml中。這樣做的好處是草巡,只要稍微改變一下dimens.xml中的定義守呜,就可以批量修改頁面的樣式。
? ? 4.activity的onCreate拆分為以下三部分(遵循單一職責原則):
? ? ? ? ? a. initVariables:初始化變量(包括Intent上的數(shù)據(jù)和activity內部使用的變量)
? ? ? ? ? b. ?initViews:加載layout布局文件山憨,初始化控件查乒。
? ? ? ? ? c.loadData:調用MobileAPI
? ?5.使用fastJSON自定義實體作為MobileAPI的數(shù)據(jù)載體
? ?6.頁面之間傳值,使用Intent攜帶序列化實體數(shù)據(jù)的方式郁竟。
? ?7.為控件添加事件玛迄,統(tǒng)一使用如下形式:
? ?8.activity中不要嵌套內部類
? ?9.Adapter綁定的數(shù)據(jù),統(tǒng)一采用ArrayList<自定義可序列化實體>
? 10為節(jié)省內存枪孩,請使用ArrayList<自定義實體>憔晒,而不是HashMap.
? 11.圖片的處理,統(tǒng)一采用第三方組件ImageLoader或Fresco.
? 12.簡單的配置信息蔑舞、設置頁面的各種開關使用SharePreferences存儲拒担。
? 13.盡量使用ApplicationContext代替Context,避免內存泄露攻询。
目的
做這些規(guī)范从撼,根本目的就是要統(tǒng)一一個團隊的編碼習慣,使一個項目中的代碼钧栖,看上去都像是一個人寫的低零。