Java变量命名规范

Java是一种区分字母大小的语言,因此我们在定义变量的时候应该注意区分大小写的使用和一些规范,下面简单的讲讲。

(一)Package(包)的命名

1、package命名要求包含的所有字符均为小写,同时不能有特殊字符。
2、如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认包里面(default package)。
3、java中的打包机制是为了防止程序多个地方出现相同的名字而将局部程序限定在一块的机制
如:不同地区可能会存在 同名同姓的人,当要找其中一个人的时候就会产生混淆,为解决这个问题,我们不同地方的所有人(程序)分别打包。调用B的时候分别带上a.B或者是b.B。这样就不会出错了。打包其实就是新建了一个文件夹,然后把需要打包的程序放在这个文件夹里面。

(二)Class(类)的命名

1、Class的名字首字母大写,通常由多个单词合成一个类名,要求每个单词的首字母也要大写,如:GetMax,GetName,HelloWorld等,这种命名方法叫帕斯卡命名法。

(三)变量、方法的命名

1、所有成员变量名,方法命名时,必须遵循骆驼命名法。
Ps:骆驼式命名法就是当变量名或函数名是由一个或多个单词连接在一起,而构成的唯一识别字时,第一个单词以小写字母开始;第二单词的首字母大写或者每一个单词的首字母都采用大写字母,如myFirstName,这样的变量名看上去就像骆驼峰一样此起彼伏,所以叫骆驼命名法,也叫驼峰命名。方法的命名:getMax(); getMinNum();

(四)数组的命名

1、数组应该总是用下面的方式来命名: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: // 历史修改记录

David 96/10/12 1.0 build this moudle
***********************************************************/
说明:Description 一项描述本文件的内容、功能、内部各部分之间的关系及本文件与
其它文件关系等。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:通过对函数或过程、变量、结构等正确的命名以及合理地组织代码的结构,使代码成为
自注释的。
说明:清晰准确的函数、变量等的命名,可增加代码可读性,并减少不必要的注释。

你可能感兴趣的:(Java变量命名规范)