1.命名基本原則
在面向對象編程中,對於類,對象,方法,變量等方面的命名應該本着描述性以及惟一標識性這兩大特徵來命名,才能保證資源之間不衝突,而且每個都便於記憶。java
命名原則是:使名稱足夠長以便有必定的意義,而且足夠短以免冗長。git
2.命名基本規範程序員
2.1.編程基本命名規範 數據庫
(1)避免難懂的名稱,如屬性名xxK8,這樣的名稱會致使多義性。
(2) 在面向對象的語言中,在類屬性的名稱中包含類名是多餘的,如Book.BookTitle,而是應該使用Book.Title。
(3)在容許函數重載的語言中,全部重載都應該執行類似的函數。 express
(4)使用動詞-名詞的方法來命名對給定對象執行特定操做的例程,如CalculateInvoiceTotal()。(例程是某個系統對外提供的功能接口或服務的集合) 編程
(5)只要合適,在變量名的末尾或開頭加計算限定符(Avg、Sum、Min、Max、Index)。
(6)在變量名中使用互補對,如min/max、begin/end和open/close。 瀏覽器
(7)布爾變量名應該包含Is,這意味着Yes/No 或 True/False 值,如 fileIsFound。 編輯器
(8)即便對於可能僅出如今幾個代碼行中的生存期很短的變量,仍然使用有意義的名 稱。僅對於短循環索引使用單字母變量名,如 i 或 j。 ide
(9)爲了幫助區分變量和例程,對例程名稱使用Pascal大小寫處理 (CalculateInvoiceTotal),其中每一個單詞的第一個字母都是大寫的。對於變量名,使用 camel大小寫處理 (documentFormatType),其中除了第一個單詞外每一個單詞的第一個字母都是大寫的。 函數
(10)不要使用原義數字或原義字符串,而是使用命名常數,NUM_DAYS_IN_WEEK ,以便於維護和理解。
2.2.分類命名規範
(1)包的命名
Java包的名字都是由小寫單詞組成。可是因爲Java面向對象編程的特性,每一名Java程序員均可以編寫屬於本身的Java包,爲了保障每一個Java包命名的惟一性,在最新的Java編程規範中,要求程序員在本身定義的包的名稱以前加上惟一的前綴。因爲互聯網上的域名稱是不會重複的,因此程序員通常採用本身在互聯網上的域名稱做爲本身程序包的惟一前綴。
例如: net.frontfree.javagroup
(2)類的命名
類的名字必須由大寫字母開頭而單詞中的其餘字母均爲小寫;若是類名稱由多個單詞組成,則每一個單詞的首字母均應爲大寫例如TestPage;若是類名稱中包含單詞縮寫,則這個所寫詞的每一個字母均應大寫,如:XMLExample,還有一點命名技巧就是因爲類是設計用來表明對象的,因此在命名類時應儘可能選擇名詞。
例如: Circle
(3)方法的命名
方法的名字的第一個單詞應以小寫字母做爲開頭,後面的單詞則用大寫字母開頭。
例如: sendMessge
(4).常量的命名
常量的名字應該都使用大寫字母,而且指出該常量完整含義。若是一個常量名稱由多個單詞組成,則應該用下劃線來分割這些單詞。
例如: MAX_VALUE
(5)參數的命名
參數的命名規範和方法的命名規範相同,並且爲了不閱讀程序時形成迷惑,請在儘可能保證參數名稱爲一個單詞的狀況下使參數的命名儘量明確。
(6)Javadoc註釋
Java除了能夠採用咱們常見的註釋方式以外,Java語言規範還定義了一種特殊的註釋,也就是咱們所說的Javadoc註釋,它是用來記錄咱們代碼中的API的。Javadoc註釋是一種多行註釋,以/**開頭,而以*/結束,註釋能夠包含一些HTML標記符和專門的關鍵詞。使用Javadoc註釋的好處是編寫的註釋能夠被自動轉爲在線文檔,省去了單獨編寫程序文檔的麻煩。
例如:
/**
* This is an example of
* Javadoc
*
* @author darchon
* @version 0.1, 10/11/2002
*/
在每一個程序的最開始部分,通常都用Javadoc註釋對程序的整體描述以及版權信息,以後在主程序中能夠爲每一個類、接口、方法、字段添加Javadoc註釋,每一個註釋的開頭部分先用一句話歸納該類、接口、方法、字段所完成的功能,這句話應單獨佔據一行以突出其歸納做用,在這句話後面能夠跟隨更加詳細的描述段落。在描述性段落以後還能夠跟隨一些以Javadoc註釋標籤開頭的特殊段落,例如上面例子中的@auther和@version,這些段落將在生成文檔中以特定方式顯示。
雖然爲一個設計低劣的程序添加註釋不會使其變成好的程序,可是若是按照編程規範編寫程序而且爲程序添加良好的註釋卻能夠幫助你編寫出設計完美,運行效率高且易於理解的程序,尤爲是在多人合做完成同一項目時編程規範就變得更加劇要。俗話說「磨刀不誤砍柴工」,花費一點時間去適應一下Java編程規範是有好處的。
3.分類命名規範
3.1.基本數據類型命名規範
Integer:int+描述 Char:chr+描述 Boolean:bln+描述
Long:lng+描述 Short:shr +描述 Double:dbl+描述
String:str+描述 Float:flt+描述 Single:sng+描述
DataTime:dt+描述 Array:arr+描述 Object:obj+描述
如:String srtName;
3.2.控件命名規範
TextView :txt_+描述 |
Button :btn_+描述 |
ImageButton :ib_+描述 |
ImageView :img_+描述 |
CheckBox :chk_+描述 |
RadioButton :rb_+描述 |
AnalogClock :ac_+描述 |
DigitalClock :dc_+描述 |
DatePicker :dp_+描述 |
TimePicker :tp _+描述 |
ToggleButton :tb_+描述 |
EditText:edit_+描述 |
ProgressBar:pb_+描述 |
SeekBar:sb _+描述 |
AutoCompleteTextView:autotxt_+描述 |
MultiAutoCompleteTextView:mlautotxt_+描述 |
ZoomControls:zc_+描述 |
Include:ind_+描述 |
VideoView:vv_+描述 |
WebView:wv_+描述 |
RatingBar:ratbr_+描述 |
Tab:tab__+描述 |
Spinner:spin_+描述 |
Chronometer:chro_+描述 |
ScrollView:sv_+描述 |
TextSwitcher:tswi_+描述 |
Gallery:gal_+描述 |
ImageSwitcher:imgswi_+描述 |
GridView:gv_+描述 |
ListView:lv_+描述 |
ExpandableList: exl_+描述 |
MapView: mv_+描述 |
控件說明以下:
• TextView - 文本顯示控件
• Button - 按鈕控件
• ImageButton - 圖片按鈕控件
• ImageView - 圖片顯示控件
• CheckBox - 複選框控件
• RadioButton - 單選框控件
• AnalogClock - 鐘錶(帶錶盤的那種)控件
• DigitalClock - 電子錶控件
• DatePicker - 日期選擇控件
• TimePicker - 時間選擇控件
• ToggleButton - 雙狀態按鈕控件
• EditText - 可編輯文本控件
• ProgressBar - 進度條控件
• SeekBar - 可拖動的進度條控件
• AutoCompleteTextView - 支持自動完成功能的可編輯文本控件
• MultiAutoCompleteTextView - 支持自動完成功能的可編輯文本控件,容許輸入多值(多值之間會自動地用指定的分隔符 分開)
• ZoomControls - 放大/縮小按鈕控件
• Include - 整合控件
• VideoView - 視頻播放控件
• WebView - 瀏覽器控件
• RatingBar - 評分控件
• Tab - 選項卡控件
• Spinner - 下拉框控件
• Chronometer - 計時器控件
• ScrollView - 滾動條控件
• TextSwitcher - 文字轉換器控件(改變文字時增長一些動畫效果)
• Gallery –畫廊控件
• ImageSwitcher - 圖片轉換器控件(改變圖片時增長一些動畫效果)
• GridView - 網格控件
• ListView - 列表控件
• ExpandableList - 支持展開/收縮功能的列表控件
3.3.變量命名規範
變量命名:前綴+類型描述+意義描述
前綴:
成員變量:m_*** 局部變量:l_*** 形參:a_***
常量:大寫_*** 枚舉值:em_***
3.4.程序規範
工程的命名爲:描述
應用程序名的命名爲:描述+App
4.代碼書寫規範
(1)java代碼中不出現中文,最多註釋中能夠出現中文
(2)使用shape和selector
(3)圖片儘可能分拆成多個可重用的圖片
(4)服務端能夠實現的,就不要放在客戶端
(5)引用第三方庫要慎重,避免應用大容量的第三方庫,致使客戶端包很是大
(6)處理應用全局異常和錯誤,將錯誤以郵件的形式發送給服務端
(7)使用靜態變量方式實現界面間共享要慎重
(8)不要重用父類的handler,對應一個類的handler也不該該讓其子類用到,不然會致使message.what衝突
(9)strings.xml中使用%1$s實現字符串的通配
(10)複雜佈局使用RelativeLayout
(11)自適應屏幕,使用dp替代pix
(12)使用animation-list製做動畫效果
(13))創建標準的縮進大小(如四個空格),並一致地使用此標準。用規定的縮進對齊代碼節。
(14)在發佈源代碼的硬拷貝版本時使用特定的字體以及字號(新宋體、小五號)。
(15)在括號對對齊的位置垂直對齊左括號和右括號,如:
for (i=0; i<100; i++)
{
;
}
(16)沿邏輯結構行縮進代碼使代碼更易於閱讀和理解,如:
if(expression)
{
if(expression )
{
//
//此處填寫你的代碼塊;
//
}
else
{
//
//此處填寫你的代碼塊;
//
}
}
(17)爲註釋和代碼創建最大的行長度,以免不得不滾動源代碼編輯器,而且能夠提供整齊的硬拷貝表示形式。
(18)當一行內容太長而必須換行時,在後面換行代碼中要使用縮進格式,以下:
string inserString ="Insert Into TableName(username,password,email,sex,address) "
+"Values( 'Soholife ', 'chenyp ', 'soholife@sina.com ', 'male ', '深圳福田 ') ";
(19)每一行上放置的語句避免超過一條。特殊循環如for(i =0;i<100;i++)等除外。
(20)編寫SQL語句時,對於關鍵字使用所有大寫,對於數據庫元素(如表、列和視圖)使用大小寫混合。
(21)
例如SELECT * FROM Table1;
將每一個主要的SQL子句放在不一樣的行上,這樣更容易閱讀和編輯語句,例如:
SELECT FirstName, LastName
FROM Customers
WHERE State = 'WA '
(22)在物理文件之間在邏輯上劃分源代碼
(23)使用空白爲源代碼提供結構線索。這樣作會建立代碼「段」,有助於讀者理解軟件的邏輯分段
(24)將大的複雜代碼段分爲較小的、易於理解的模塊。
5.註釋
軟件文檔以兩種形式存在:外部的和內部的。外部文檔(如規範、幫助文件和設計文檔)在源代碼的外部維護。內部文檔由開發人員在開發時在源代碼中編寫的註釋組成。
不考慮外部文檔的可用性,因爲硬拷貝文檔可能會放錯地方,源代碼清單應該可以獨立存在。外部文檔應該由規範、設計文檔、更改請求、錯誤歷史記錄和使用的編碼標準組成。 如下幾點是規範的註釋方法:
(1)一個工程應有一個統一的頭文件註釋,以說明整個工程的信息、建立日期、版本等等
(2)對重要的程序加註釋進行說明
(3)修改代碼或刪除時,將原代碼用註釋的方法屏蔽,同時要加開發者自身對修改操做的註釋。格式爲:
//原代碼
//Added/(Modified/ Deleted) by 開發者姓名 年-月-日;
//由於業務緣由修改的,要註明修改或刪除緣由)
新代碼
(4)使用XML文檔格式,以下面方法的註釋:
/// <summary>
/// 獲得某人的年齡
/// </summary>
/// <param name= "userName "> 用戶名 </param>
/// <returns> 用戶年齡 </returns>
public int GetUserAge(string userName)
{
//
//此處寫你的程序代碼
//
}
(5)避免雜亂的註釋,而是應該使用空白將註釋同代碼分開。
(6)移除全部臨時或無關的註釋,以免在往後的維護工做中產生混亂。
(7)註釋應對代碼進行準確的說明,不該存在歧義。
(8)在整個應用程序中,使用具備一致的標點和結構的統同樣式來構造註釋。