命名规范:
命名标准:
Camel 标记法:首字母是小写的,接下来的单词都以大写字母开头。
1.包的命名
Java包的名字都是由小写单词组成。
例如:com.haorizi.hzw
2.类、接口的命名
Java类名通常以大写字母开头,如果类名称由多个单词组成,则每个单词的首字母均应为大写:
例如:OrderService
如果类名称中包含单词缩写,则这个所写词的每个字母均应大写:
例如:SQLService
3.方法的命名
方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。
例如:printMessage
4.常量的命名
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。
例如:MAX_VALUE
5.属性、参数的命名
属性、参数的命名规范和方法的命名规范相同。
代码规范:
1.缩进排版(Indentation)
4个空格常被作为缩进排版的一个单位。
2.行长度(Line Length)
尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之。
注意:用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。
3.换行(Wrapping Lines)
当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之:
在一个逗号后面断开
在一个操作符前面断开
宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开
新的一行应该与上一行同一级别表达式的开头处对齐
断开方法调用的一些例子:
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; //PREFFER
if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如:
//DON’T USE THIS INDENTATION
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) { //BAD WRAPS
doSomethingAboutIt(); //MAKE THIS LINE EASY TO MISS
}
//USE THIS INDENTATION INSTEAD
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}
//OR USE THIS
if ((condition1 && condition2) || (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}
这里有三种可行的方法用于处理三元运算表达式:
alpha = (aLongBooleanExpression) ? beta : gamma;
alpha = (aLongBooleanExpression) ? beta
: gamma;
4.实现注释的格式(Implementation Comment Formats)
4.1 单行注释(Single-Line Comments)
短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见"块注释")。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子:
if (condition) {
/* Handle the condition. */
...
}
4.2 尾端注释(Trailing Comments)
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。
以下是一个Java代码中尾端注释的例子:
if (a == 2) {
return TRUE; /* special case */
} else {
return isPrime(a); /* works only for odd a */
}
4.3 行末注释(End-Of-Line Comments)
注释界定符"//",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。以下是所有三种风格的例子:
if(foo > 1) {
// Do a double-flip.
...
} else {
return false; // Explainwhy here.
}
//if (bar > 1) {
//
// // Do a triple-flip.
// ...
//}
//else {
// return false;
//}
5.声明(Declarations)
5.1每行声明变量的数量(Number Per Line)
推荐一行一个声明,因为这样以利于写注释。亦即,
int level; // indentation level
int size; // size of table
不要将不同类型变量的声明放在同一行,例如:
int foo, fooarray[]; //WRONG!
注意:上面的例子中,在类型和标识符之间放了一个空格,另一种被允许的替代方式是使用制表符:
int level; // indentation level
int size; // size of table
Object currentEntry; // currently selected table entry
5.2 布局(Placement)
只在代码块的开始处声明变量。(一个块是指任何被包含在大括号"{"和"}"中间的代码。)不要在首次用到该变量时才声明之。这会把注意力不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可移植性。
void myMethod() {
int int1 = 0; // beginningof method block
if (condition) {
int int2 = 0; // beginning of "if" block
...
}
}
该规则的一个例外是for循环的索引变量
for (int i = 0; i < maxLoops; i++) { ... }
避免声明的局部变量覆盖上一级声明的变量。例如,不要在内部代码块中声明相同的变量名:
int count;
...
myMethod() {
if (condition) {
int count = 0; // AVOID!
...
}
...
}
5.3 类和接口的声明(Class and Interface Declarations)
当编写类和接口是,应该遵守以下格式规则:
- 在方法名与其参数列表之前的左括号"("间不要有空格
- 左大括号"{"位于声明语句同行的末尾
- 右大括号"}"另起一行,与相应的声明语句对齐,除非是一个空语句,"}"应紧跟在"{"之后
class Sample extends Object {
int ivar1;
int ivar2;
Sample(int i, int j) {
ivar1 = i;
ivar2 = j;
}
int emptyMethod() {}
...
}
- 方法与方法之间以空行分隔
6 语句(Statements)
6.1 简单语句(Simple Statements)
每行至多包含一条语句,例如:
argv++; //Correct
argc--; //Correct
argv++; argc--; //AVOID!
6.2 复合语句(Compound Statements)
复合语句是包含在大括号中的语句序列,形如"{ 语句 }"。例如下面各段:
- 被括其中的语句应该较之复合语句缩进一个层次
- 左大括号"{"应位于复合语句起始行的行尾;右大括号"}"应另起一行并与复合语句首行对齐。
- 大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分。这样便于添加语句而无需担心由于忘了加括号而引入bug。
6.3 返回语句(return Statements)
一个带返回值的return语句不使用小括号"()",除非它们以某种方式使返回值更为显见。例如:
return;
return myDisk.size();
return (size ? size : defaultSize);
6.4 if,if-else,if else-if else语句(if, if-else, if else-if else Statements)
if-else语句应该具有如下格式:
if(condition) {
statements;
}
if (condition) {
statements;
}else {
statements;
}
if (condition) {
statements;
}else if (condition) {
statements;
}
else{
statements;
}
注意:if语句总是用"{"和"}"括起来,如果仅是简单的一条判断,可用以下格式:
if(condition)
statement;
6.5 for语句(for Statements)
一个for语句应该具有如下格式:
for(initialization; condition; update) {
statements;
}
一个空的for语句(所有工作都在初始化,条件判断,更新子句中完成)应该具有如下格式:
for (initialization; condition; update);
当在for语句的初始化或更新子句中使用逗号时,避免因使用三个以上变量,而导致复杂度提高。若需要,可以在for循环之前(为初始化子句)或for循环末尾(为更新子句)使用单独的语句。
6.6 while语句(while Statements)
一个while语句应该具有如下格式:
while (condition) {
statements;
}
一个空的while语句应该具有如下格式:
while(condition);
6.7 do-while语句(do-while Statements)
一个do-while语句应该具有如下格式:
do {
statements;
}
while (condition);
6.8 switch语句(switch Statements)
一个switch语句应该具有如下格式:
switch (condition) {
case ABC:
statements;
/* falls through */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释。上面的示例代码中就包含注释/* falls through */。
6.9 try-catch语句(try-catch Statements)
一个try-catch语句应该具有如下格式:
try {
statements;
}
catch (ExceptionClass e) {
statements;
}
一个try-catch语句后面也可能跟着一个finally语句,不论try代码块是否顺利执行完,它都会被执行。
try {
statements;
}
catch (ExceptionClass e) {
statements;
}
finally {
statements;
}
7 空白(White Space)
7.1 空行(Blank Lines)
空行将逻辑相关的代码段分隔开,以提高可读性.下列情况应该总是使用两个空行:
- 一个源文件的两个片段(section)之间
- 类声明和接口声明之间
下列情况应该总是使用一个空行:
- 两个方法之间
- 方法内的局部变量和方法的第一条语句之间
- 块注释(参见"5.1.1")或单行注释(参见"5.1.2")之前
- 一个方法内的两个逻辑段之间,用以提高可读性
7.2 空格(Blank Spaces)
下列情况应该使用空格:
- 一个紧跟着括号的关键字应该被空格分开,例如:
while (true) {
...
}
注意:空格不应该置于方法名与其左括号之间。这将有助于区分关键字和方法调用。
- 空白应该位于参数列表中逗号的后面
- 所有的二元运算符,除了".",应该使用空格将之与操作数分开。一元操作符和操作数之间不因该加空格,比如:负号("-")、自增
("++")和自减("--")。例如:
a +=c + d;
a = (a + b) / (c * d);
while (d++ = s++) {
n++;
}
printSize("size is " + foo + "\n");
- for语句中的表达式应该被空格分开,例如:
for (expr1; expr2; expr3)
- 强制转型后应该跟一个空格,例如:
myMethod((byte) aNum, (Object) x);
myMethod((int) (cp + 5), ((int) (i + 3)) + 1);
8 引用类变量和类方法(Referring to Class Variables and Methods)
避免用一个对象访问一个类的静态变量和方法。应该用类名替代。例如:
classMethod(); //OK
AClass.classMethod(); //OK
anObject.classMethod(); //AVOID!
8.1 变量赋值(Variable Assignments)
避免在一个语句中给多个变量赋相同的值。它很难读懂。例如:
fooBar.fChar = barFoo.lchar = 'c'; // AVOID!
不要将赋值运算符用在容易与相等关系运算符混淆的地方。例如:
if(c++ = d++) { // AVOID! (Javadisallows)
...
}
应该写成
if ((c++ = d++) != 0) {
...
}
不要使用内嵌(embedded)赋值运算符试图提高运行时的效率,这是编译器的工作。例如:
d = (a = b + c) + r; // AVOID!
应该写成
a =b + c;
d =a + r;
8.2 圆括号(Parentheses)
一般而言,在含有多种运算符的表达式中使用圆括号来避免运算符优先级问题,是个好方法。即使运算符的优先级对你而言可能很清楚,但对其他人未必如此。你不能假设别的程序员和你一样清楚运算符的优先级。
if(a == b && c == d) // AVOID!
if((a == b) && (c == d)) // RIGHT
8.3 返回值(Returning Values)
设法让你的程序结构符合目的。例如:
if(booleanExpression) {
return true;
}else {
return false;
}
应该代之以如下方法:
return booleanExpression;
类似的:
if(condition) {
return x;
}
return y;
应该写做:
return (condition ? x : y);
8.4 条件运算符"?"前的表达式(Expressions before '?' in the Conditional Operator)
如果一个包含二元运算符的表达式出现在三元运算符" ? : "的"?"之前,那么应该给表达式添上一对圆括号。例如:
(x >= 0) ? x : -x;
分享到:
相关推荐
《网络资源命名及编码规范》是中国电信为了统一和规范网络资源管理而制定的重要文档,它对网络资源的命名和编码进行了详细的规定,旨在提高网络管理效率,减少误操作,便于资源的查找、统计和分析。以下是对该规范的...
"MSSQLServer命名及编码规范" MS SQL Server 命名及编码规范是指在使用 MS SQL Server 数据库的过程中,使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。该规范主要涉及到数据库...
《网络资源管理系统命名及编码规范》是一份详细规定有线电视传输网络资源命名与编码的文档,旨在确保网络资源的有效管理和高效利用。该规范提出了全网统一的命名和编码标准,以便于资源的唯一识别、系统的开发和数据...
编码规范在软件开发中扮演着至关重要的角色,因为它确保了代码的一致性、可读性和可维护性。本规范主要针对基于.NET平台的软件开发,旨在提供一套清晰的指导原则,使团队成员遵循统一的编码风格。 1. **代码格式**...
ORACLE数据库命名编码规范的制定,旨在实现数据库命名及编码风格的标准化,从而提升数据库的可读性、可理解和可继承性,减少后期维护成本。此规范特别针对使用ORACLE作为后台数据库的应用系统和项目开发工作,确保在...
编码规范是 IOS 开发编码及命名规范的核心内容,以下是编码规范的详细介绍: 文件 文件命名应遵守以下规则: * 文件名使用小写字母和数字,禁止使用中文和特殊字符 * 文件名不得超过 32 个字符 * 文件名应有明确的...
软件工程编码规范的内容包括命名规范、编码规范、注释规范、错误处理规范等。这些规范可以帮助开发者编写高质量的代码,提高代码的可读性和可维护性。 4. 命名规范 命名规范是软件工程编码规范的重要组成部分。...
Java 编程命名规范和编码规范 Java 编程命名规范和编码规范是 Java 开发中的重要组成部分,它们直接影响着代码的可读性、可维护性和可扩展性。以下是 Java 编程命名规范和编码规范的详细介绍: 1. 目录 java 基本...
《C++编码规范——华为实践》 在软件开发领域,编码规范是提升代码质量和团队协作效率的重要工具。尤其对于C++这种复杂的编程语言,遵循一套统一的编码规范显得尤为重要。华为作为全球知名的科技公司,其在C++编码...
在编程世界中,遵循一套统一的命名规则和编码规范至关重要,尤其是在C#这样的强类型语言中。这不仅有助于代码的可读性和可维护性,也是专业程序员的基本素养。本资料"**C#命名规则和编码规范**"针对C#语言中的命名...
为规范公司电网资产统一身份编码(简称“实物'ID'") 结构和电网资产实物"ID" 标签的技术 性能及安装、维护要求,实现电网资产全寿命周期项目编码、WBS编码、物料编码、资产编码、设备编 码等各类专业编码的贯穿,...
.NETwebforms应用程序的架构应遵循Microsoft建议的架构方案. 根据项目规模不同,适当取舍各个基本层次.将系统划分为多层的目的在于简化隔离各个子系统内部逻辑.大体上应按照以下规则创建:应至少包含表示层与业务一般...
### SQL Server 数据库命名编码规范解析 #### 一、概述 在软件开发过程中,数据库的设计与实现至关重要。良好的数据库设计不仅能够提升应用系统的性能和稳定性,还能极大地提高后期维护的效率。为此,本文将深入...
本文档介绍了华为Java语言编程规范的相关知识点,涵盖编程规范、命名规范、注释规范、编码规范、JTEST规则等内容。 1. 编程规范 编程规范是指在编程时必须遵守的原则,旨在确保代码的可读性、可维护性和可扩展性。...
命名风格是 Java 编码规范的重要组成部分。Java 编码规范规定,代码中的命名不能以下划线或美元符号开始,也不能以下划线或美元符号结束。同时,代码中的命名也不能使用拼音与英文混合的方式,更不允许直接使用中文...
团队项目开发"编码规范"之五:命名规范 团队项目开发"编码规范"之六:语句 团队项目开发"编码规范"之七:控件命名规则 团队项目开发"编码规范"之八:代码格式检查 团队项目开发“编码规范”之九:代码分析
为了确保代码的可读性、可维护性和团队协作效率,遵循一套统一的编码规范、命名规范和优化规范至关重要。以下是一些关键点的详细说明: 1. **前言**: 编码规范的目的是为了提高代码质量,减少因不规范的编程习惯...
命名规范是编码规范中的基础组成部分,良好的命名习惯可以使代码更加易于理解和维护。 ##### 1. 命名原则 - **使用英文全称**:尽可能使用完整的英文单词进行命名,避免使用过于简化的词汇。 - **避免超长命名**:...
Oracle数据库的统一命名与编码规范是数据库管理中的一个重要方面,旨在提高代码的可读性、可维护性和一致性。本文档详细介绍了在Oracle 10g环境下制定的一套标准规范,适用于所有以Oracle作为后台数据库的应用系统和...