`
qiufeihu
  • 浏览: 34225 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

命名及编码规范

阅读更多
命名规范:
命名标准:
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命名及编码规范

    "MSSQLServer命名及编码规范" MS SQL Server 命名及编码规范是指在使用 MS SQL Server 数据库的过程中,使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。该规范主要涉及到数据库...

    网络资源管理系统命名及编码规范.doc

    《网络资源管理系统命名及编码规范》是一份详细规定有线电视传输网络资源命名与编码的文档,旨在确保网络资源的有效管理和高效利用。该规范提出了全网统一的命名和编码标准,以便于资源的唯一识别、系统的开发和数据...

    软件开发编码及命名规范.pdf

    编码规范在软件开发中扮演着至关重要的角色,因为它确保了代码的一致性、可读性和可维护性。本规范主要针对基于.NET平台的软件开发,旨在提供一套清晰的指导原则,使团队成员遵循统一的编码风格。 1. **代码格式**...

    ORACLE数据库命名编码规范

    ORACLE数据库命名编码规范的制定,旨在实现数据库命名及编码风格的标准化,从而提升数据库的可读性、可理解和可继承性,减少后期维护成本。此规范特别针对使用ORACLE作为后台数据库的应用系统和项目开发工作,确保在...

    IOS开发编码及命名规范

    编码规范是 IOS 开发编码及命名规范的核心内容,以下是编码规范的详细介绍: 文件 文件命名应遵守以下规则: * 文件名使用小写字母和数字,禁止使用中文和特殊字符 * 文件名不得超过 32 个字符 * 文件名应有明确的...

    软件工程编码规范

    软件工程编码规范的内容包括命名规范、编码规范、注释规范、错误处理规范等。这些规范可以帮助开发者编写高质量的代码,提高代码的可读性和可维护性。 4. 命名规范 命名规范是软件工程编码规范的重要组成部分。...

    java编程命名规范和编码规范

    Java 编程命名规范和编码规范 Java 编程命名规范和编码规范是 Java 开发中的重要组成部分,它们直接影响着代码的可读性、可维护性和可扩展性。以下是 Java 编程命名规范和编码规范的详细介绍: 1. 目录 java 基本...

    c++编码规范(华为).rar

    《C++编码规范——华为实践》 在软件开发领域,编码规范是提升代码质量和团队协作效率的重要工具。尤其对于C++这种复杂的编程语言,遵循一套统一的编码规范显得尤为重要。华为作为全球知名的科技公司,其在C++编码...

    C#命名规则和编码规范.zip_C#_C#命名规则及规范_c# 编码规范

    在编程世界中,遵循一套统一的命名规则和编码规范至关重要,尤其是在C#这样的强类型语言中。这不仅有助于代码的可读性和可维护性,也是专业程序员的基本素养。本资料"**C#命名规则和编码规范**"针对C#语言中的命名...

    Q GDW 11712-2017 电网资产统一身份编码技术规范.pdf

    为规范公司电网资产统一身份编码(简称“实物'ID'") 结构和电网资产实物"ID" 标签的技术 性能及安装、维护要求,实现电网资产全寿命周期项目编码、WBS编码、物料编码、资产编码、设备编 码等各类专业编码的贯穿,...

    应用程序设计/命名及编码规范方案

    .NETwebforms应用程序的架构应遵循Microsoft建议的架构方案. 根据项目规模不同,适当取舍各个基本层次.将系统划分为多层的目的在于简化隔离各个子系统内部逻辑.大体上应按照以下规则创建:应至少包含表示层与业务一般...

    SQL SERVER数据库命名编码规范.pdf

    ### SQL Server 数据库命名编码规范解析 #### 一、概述 在软件开发过程中,数据库的设计与实现至关重要。良好的数据库设计不仅能够提升应用系统的性能和稳定性,还能极大地提高后期维护的效率。为此,本文将深入...

    华为Java语言编码规范.doc

    本文档介绍了华为Java语言编程规范的相关知识点,涵盖编程规范、命名规范、注释规范、编码规范、JTEST规则等内容。 1. 编程规范 编程规范是指在编程时必须遵守的原则,旨在确保代码的可读性、可维护性和可扩展性。...

    Java编码规范.docx

    命名风格是 Java 编码规范的重要组成部分。Java 编码规范规定,代码中的命名不能以下划线或美元符号开始,也不能以下划线或美元符号结束。同时,代码中的命名也不能使用拼音与英文混合的方式,更不允许直接使用中文...

    团队项目开发"编码规范"

    团队项目开发"编码规范"之五:命名规范 团队项目开发"编码规范"之六:语句 团队项目开发"编码规范"之七:控件命名规则 团队项目开发"编码规范"之八:代码格式检查 团队项目开发“编码规范”之九:代码分析

    java编码规范、命名规范和优化规范

    为了确保代码的可读性、可维护性和团队协作效率,遵循一套统一的编码规范、命名规范和优化规范至关重要。以下是一些关键点的详细说明: 1. **前言**: 编码规范的目的是为了提高代码质量,减少因不规范的编程习惯...

    Android客户端编码规范

    命名规范是编码规范中的基础组成部分,良好的命名习惯可以使代码更加易于理解和维护。 ##### 1. 命名原则 - **使用英文全称**:尽可能使用完整的英文单词进行命名,避免使用过于简化的词汇。 - **避免超长命名**:...

    ORACLE数据库的统一命名与编码规范.doc

    Oracle数据库的统一命名与编码规范是数据库管理中的一个重要方面,旨在提高代码的可读性、可维护性和一致性。本文档详细介绍了在Oracle 10g环境下制定的一套标准规范,适用于所有以Oracle作为后台数据库的应用系统和...

Global site tag (gtag.js) - Google Analytics