Java變量命名規範

Java是一種區分字母大小的語言,所以咱們在定義變量的時候應該注意區分大小寫的使用和一些規範,下面簡單的講講。java

(一)Package(包)的命名web

一、package命名要求包含的全部字符均爲小寫,同時不能有特殊字符。
二、若是定義類的時候沒有使用package,那麼java就認爲咱們所定義的類位於默認包裏面(default package)。
三、java中的打包機制是爲了防止程序多個地方出現相同的名字而將局部程序限定在一塊的機制
如:不一樣地區可能會存在 同名同姓的人,當要找其中一我的的時候就會產生混淆,爲解決這個問題,咱們不一樣地方的全部人(程序)分別打包。調用B的時候分別帶上a.B或者是b.B。這樣就不會出錯了。打包其實就是新建了一個文件夾,而後把須要打包的程序放在這個文件夾裏面。數據庫

(二)Class(類)的命名編程

一、Class的名字首字母大寫,一般由多個單詞合成一個類名,要求每一個單詞的首字母也要大寫,如:GetMax,GetName,HelloWorld等,這種命名方法叫帕斯卡命名法。數組

(三)變量、方法的命名數據結構

一、全部成員變量名,方法命名時,必須遵循駱駝命名法。
Ps:駱駝式命名法就是當變量名或函數名是由一個或多個單詞鏈接在一塊兒,而構成的惟一識別字時,第一個單詞以小寫字母開始;第二單詞的首字母大寫或者每個單詞的首字母都採用大寫字母,如myFirstName,這樣的變量名看上去就像駱駝峯同樣此起彼伏,因此叫駱駝命名法,也叫駝峯命名。方法的命名:getMax(); getMinNum();編輯器

(四)數組的命名svg

一、數組應該老是用下面的方式來命名:String [ ] name, 而不是String name [ ];
例如咱們的mian的函數:public static void main(String args [ ]){ } 這樣也行,可是沒有
public static void main(String[ ] args ) { }這樣規範 。函數

後面在補充一些華爲的一些代碼規範工具

1 排版
¹1-1:程序塊要採用縮進風格編寫,縮進的空格數爲4個。
說明:對於由開發工具自動生成的代碼能夠有不一致。

¹1-2:相對獨立的程序塊之間、變量說明以後必須加空行。

示例:以下例子不符合規範。

if (!valid_ni(ni))
{
… // program code
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;

應以下書寫

if (!valid_ni(ni))
{
… // program code
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;

¹1-3:較長的語句(>80字符)要分紅多行書寫,長表達式要在低優先級操做符處劃分新行,
操做符放在新行之首,劃分出的新行要進行適當的縮進,使排版整齊,語句可讀。
示例:

perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN

  • STAT_SIZE_PER_FRAM * sizeof( _UL );
    act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied
    = stat_poi[index].occupied;
    act_task_table[taskno].duration_true_or_false
    = SYS_get_sccp_statistic_state( stat_item );
    report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER)
    僅供內部使用 2
    軟件編程規範總則 1 排版
    && (n7stat_stat_item_valid (stat_item))
    && (act_task_table[taskno].result_data != 0));
    僅供內部使用 3
    軟件編程規範總則 1 排版

¹1-4:循環、判斷等語句中如有較長的表達式或語句,則要進行適應的劃分,長表達式要在低
優先級操做符處劃分新行,操做符放在新行之首。
示例:
if ((taskno < max_act_task_number)
&& (n7stat_stat_item_valid (stat_item)))
{
… // program code
}
for (i = 0, j = 0; (i < BufferKeyword[word_index].word_length)
&& (j < NewKeyword.word_length); i++, j++)
{
… // program code
}
for (i = 0, j = 0;
(i < first_word_length) && (j < second_word_length);
i++, j++)
{
… // program code
}

¹1-5:若函數或過程當中的參數較長,則要進行適當的劃分。
示例:
n7stat_str_compare((BYTE *) & stat_object,
(BYTE *) & (act_task_table[taskno].stat_object),
sizeof (_STAT_OBJECT));
n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER

  • index, stat_object );

¹1-6:不容許把多個短語句寫在一行中,即一行只寫一條語句。
示例:以下例子不符合規範。
rect.length = 0; rect.width = 0;
應以下書寫
僅供內部使用 4
軟件編程規範總則 1 排版
rect.length = 0;
rect.width = 0;

¹1-7:if、for、do、while、case、switch、default等語句自佔一行,且if、for、
do、while等語句的執行語句部分不管多少都要加括號{}。
示例:以下例子不符合規範。
if (pUserCR == NULL) return;
應以下書寫:
if (pUserCR == NULL)
{
return;
}
¹1-8:對齊只使用空格鍵,不使用TAB鍵。
說明:以避免用不一樣的編輯器閱讀程序時,因 TAB 鍵所設置的空格數目不一樣而形成程序佈局
不整齊,不要使用 BC 做爲編輯器合版本,由於 BC 會自動將 8 個空格變爲一個 TAB 鍵,
所以使用 BC 合入的版本大多會將縮進變亂。

¹1-9:函數或過程的開始、結構的定義及循環、判斷等語句中的代碼都要採用縮進風格,case
語句下的狀況處理語句也要聽從語句縮進要求。

2 註釋
¹2-1:通常狀況下,源程序有效註釋量必須在20%以上。

說明:註釋的原則是有助於對程序的閱讀理解,在該加的地方都加了,註釋不宜太多也不
能太少,註釋語言必須準確、易懂、簡潔。

¹2-2:說明性文件(如頭文件.h文件、.inc文件、.def文件、編譯說明文件.cfg等)頭部應
進行註釋,註釋必須列出:版權說明、版本號、生成日期、做者、內容、功能、與其它文件的
關係、修改日誌等,頭文件的註釋中還應有函數功能簡要說明。
示例:下面這段頭文件的頭註釋比較標準,固然,並不侷限於此格式,但上述信息建議要
包含在內。
/*************************************************
Copyright ©, 1988-1999, Huawei Tech. Co., Ltd.
File name: // 文件名
Author: Version: Date: // 做者、版本及完成日期
Description: // 用於詳細說明此程序文件完成的主要功能,與其餘模塊
// 或函數的接口,輸出值、取值範圍、含義及參數間的控
// 制、順序、獨立或依賴等關係
Others: // 其它內容的說明
Function List: // 主要函數列表,每條記錄應包括函數名及功能簡要說明


  1. History: // 修改歷史記錄列表,每條修改記錄應包括修改日期、修改
    // 者及修改內容簡述
  2. Date:
    Author:
    Modification:

  3. *************************************************/

¹2-3:源文件頭部應進行註釋,列出:版權說明、版本號、生成日期、做者、模塊目的/功能、
主要函數及其功能、修改日誌等。
示例:下面這段源文件的頭註釋比較標準,固然,並不侷限於此格式,但上述信息建議要
包含在內。
僅供內部使用 8
軟件編程規範總則 2 註釋
/************************************************************
Copyright ©, 1988-1999, Huawei Tech. Co., Ltd.
FileName: test.cpp
Author: Version : Date:
Description: // 模塊描述
Version: // 版本信息
Function List: // 主要函數及其功能


History: // 歷史修改記錄

¹2-4:函數頭部應進行註釋,列出:函數的目的/功能、輸入參數、輸出參數、返回值、調用
關係(函數、表)等。
示例:下面這段函數的註釋比較標準,固然,並不侷限於此格式,但上述信息建議要包含
在內。
/*************************************************
Function: // 函數名稱
Description: // 函數功能、性能等的描述
Calls: // 被本函數調用的函數清單
Called By: // 調用本函數的函數清單
Table Accessed: // 被訪問的表(此項僅對於牽扯到數據庫操做的程序)
Table Updated: // 被修改的表(此項僅對於牽扯到數據庫操做的程序)
Input: // 輸入參數說明,包括每一個參數的做
// 用、取值說明及參數間關係。
Output: // 對輸出參數的說明。
Return: // 函數返回值的說明
Others: // 其它說明
*************************************************/
僅供內部使用 9
軟件編程規範總則 2 註釋

¹2-5:邊寫代碼邊註釋,修改代碼同時修改相應的註釋,以保證註釋與代碼的一致性。再也不有
用的註釋要刪除。

¹2-6:註釋的內容要清楚、明瞭,含義準確,防止註釋二義性。
說明:錯誤的註釋不但無益反而有害。

規則2-7:避免在註釋中使用縮寫,特別是很是用縮寫。
說明:在使用縮寫時或以前,應對縮寫進行必要的說明。

¹2-8:註釋應與其描述的代碼相近,對代碼的註釋應放在其上方或右方(對單條語句的註釋)
相鄰位置,不可放在下面,如放於上方則需與其上面的代碼用空行隔開。
示例:以下例子不符合規範。
例 1:
/* get replicate sub system index and net indicator /
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
例 2:
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
/
get replicate sub system index and net indicator /
應以下書寫
/
get replicate sub system index and net indicator */
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;

¹2-9:對於全部有物理含義的變量、常量,若是其命名不是充分自注釋的,在聲明時都必須加
以註釋,說明其物理含義。變量、常量、宏的註釋應放在其上方相鄰位置或右方。
示例:
/* active statistic task number /
#define MAX_ACT_TASK_NUMBER 1000
僅供內部使用 10
軟件編程規範總則 2 註釋
#define MAX_ACT_TASK_NUMBER 1000 /
active statistic task number */

¹2-10:數據結構聲明(包括數組、結構、類、枚舉等),若是其命名不是充分自注釋的,必須
加以註釋。對數據結構的註釋應放在其上方相鄰位置,不可放在下面;對結構中的每一個域的注
釋放在此域的右方。
示例:可按以下形式說明枚舉/數據/聯合結構。
/* sccp interface with sccp user primitive message name /
enum SCCP_USER_PRIMITIVE
{
N_UNITDATA_IND, /
sccp notify sccp user unit data come /
N_NOTICE_IND, /
sccp notify user the No.7 network can not /
/
transmission this message /
N_UNITDATA_REQ, /
sccp user’s unit data transmission request*/
};

¹2-11:全局變量要有較詳細的註釋,包括對其功能、取值範圍、哪些函數或過程存取它以及
存取時注意事項等的說明。
示例:
/* The ErrorCode when SCCP translate /
/
Global Title failure, as follows / // 變量做用、含義
/
0 - SUCCESS 1 - GT Table error /
/
2 - GT error Others - no use / // 變量取值範圍
/
only function SCCPTranslate() in /
/
this modual can modify it, and other /
/
module can visit it through call /
/
the function GetGTTransErrorCode() */ // 使用方法
BYTE g_GTTranErrorCode;

¹2-12:註釋與所描述內容進行一樣的縮排。
說明:可以使程序排版整齊,並方便註釋的閱讀與理解。
示例:以下例子,排版不整齊,閱讀稍感不方便。
void example_fun( void )
{
/* code one comments /
CodeBlock One
僅供內部使用 11
軟件編程規範總則 2 註釋
/
code two comments /
CodeBlock Two
}
應改成以下佈局。
void example_fun( void )
{
/
code one comments /
CodeBlock One
/
code two comments */
CodeBlock Two
}

¹2-13:將註釋與其上面的代碼用空行隔開。
示例:以下例子,顯得代碼過於緊湊。
/* code one comments /
program code one
/
code two comments /
program code two
應以下書寫
/
code one comments /
program code one
/
code two comments */
program code two

¹2-14:對變量的定義和分支語句(條件分支、循環語句等)必須編寫註釋。
說明:這些語句每每是程序實現某一特定功能的關鍵,對於維護人員來講,良好的註釋幫
助更好的理解程序,有時甚至優於看設計文檔。

¹2-15:對於switch語句下的case語句,若是由於特殊狀況須要處理完一個case後進入下一
個case處理,必須在該case語句處理完、下一個case語句前加上明確的註釋。
說明:這樣比較清楚程序編寫者的意圖,有效防止無端遺漏 break 語句。
僅供內部使用 12
軟件編程規範總則 2 註釋
示例(注意斜體加粗部分):
case CMD_UP:
ProcessUp();
break;
case CMD_DOWN:
ProcessDown();
break;
case CMD_FWD:
ProcessFwd();

if (…) { … break; } else { ProcessCFW_B(); // now jump into case CMD_A } case CMD_A: ProcessA(); break; case CMD_B: ProcessB(); break; case CMD_C: ProcessC(); break; case CMD_D: ProcessD(); 僅供內部使用 13 軟件編程規範總則 2 註釋 break; … ½2-1:避免在一行代碼或表達式的中間插入註釋。 說明:除非必要,不該在代碼或表達中間插入註釋,不然容易使代碼可理解性變差。 ½2-2:經過對函數或過程、變量、結構等正確的命名以及合理地組織代碼的結構,使代碼成爲 自注釋的。 說明:清晰準確的函數、變量等的命名,可增長代碼可讀性,並減小沒必要要的註釋。