- 浏览: 102544 次
- 性别:
- 来自: 深圳
文章分类
最新评论
一.为什么要有编码规范
编码规范对于程序员而言尤为重要,有以下几个原因:
- 一个软件的生命周期中,80%的花费在于维护
- 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
- 编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码
- 如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已
构建的其它任何产品
为了执行规范,每个软件开发人员必须一致遵守编码规范。
二.Java 命名约定
命名时应始终采用完整的英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。
1. 一般概念
a.尽量使用完整的英文描述符
b.采用适用于相关领域的术语
c.采用大小写混合使名字可读
d.尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一避免使用长的名 字(小于 15 个字母是个好主意
e.避免使用类似的名字,或者仅仅是大小写不同的名字
f.避免使用下划线(除静态常量等)
2. 示范
包(Package): 采用完整的英文描述符,应该都是由小写字母组成。
类(Class): 采用完整的英文描述符,所有单词的第一个字母大写。 Customer, SavingsAccount
接口(Interface): 采用完整的英文描述符说明接口封装,所有单词的第一个字母大写。习惯上,名字后面加上后缀 able, ible 或者 er,但这不是必需的。
组件/部件(Component) :使用完整的英文描述来说明组件的用途,末端应接上组件类型。 okButton, customerList,fileMenu
异常(Exception): 通常采用字母 e 表示异常。 e
类变量: 字段采用完整的英文描述,第一个字母小写,任何中间单词的首字母大写。 firstName, lastName
获取成员函数: 被访问字段名的前面加上前缀 get。 getFirstName(), getLastName()
布尔型的获取成员函数 :所有的布尔型获取函数必须用单词 is 做前缀。 isPersistent(), isString()
设置成员函数: 被访问字段名的前面加上前缀 set。 setFirstName(), setLastName(),setWarpSpeed()
普通成员函数: 采用完整的英文描述说明成员函数功能,第一个单词尽可能采用一个生动的动词,第一个字母小写。 openFile(), addAccount()
循环计数器: 通常采用字母 i,j,k 或者 counter 都可以接受。 i, j, k, counter
数组: 数组应该总是用下面的方式来命名:objectType[]。 byte[] buffer;
二。Java 注释约定
一个很好的可遵循的有关注释的经验法则是:问问你自己,你如果从未见过这段代码,要在合理的时间内有效地明白这段代码,你需要哪些信息。
1. 一般概念
a.注释应该增加代码的清晰度
b.保持注释的简洁
c.在写代码之前写注释
d.注释出为什么做了一些事,而不仅仅是做了什么
2. 注释哪些部分
类 :类的目的、即类所完成的功能,注释出采用的不变量。
接口: 设置接口的目的、它应如何被使用以及如何不被使用。
成员函数注释: 对于设置与获取成员函数,在成员变量已有说明的情况下,可以不加注释;普通成员函数要求说明完成什么功能,参数含义是什么返回什么;
普通成员函数内部注释: 控制结构,代码做了些什么以及为什么这样做,处理顺序等。
实参/参数 :参数含义、及其它任何约束或前提条件
3.实现注释的格式
程序可以有4种实现注释的风格:块(block)、单行(single-line)、尾端(trailing)和行末(end-of-line)。
3.1 块注释
块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。
块注释之首应该有一个空行,用于把块注释和代码分割开来。
3.2 单行注释
短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子:
3.3 尾端注释
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。
3.4 行末注释
注释界定符"//",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。
三. Java编码其它约定
a.缩进
缩进应该是每行2个空格。 不要在源文件中保存Tab字符, 在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度。
如果使用 UltrEdit 作为Java 源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符, 方法是通过 UltrEdit中先设定 Tab 使用的长度室2个空格,然后用 Format|Tabs to Spaces 菜单将 Tab 转换为空格。
b.页宽
页宽应该设置为80字符。 源代码一般不会超过这个宽度, 并导致无法完整显示, 但这一设置也可以灵活调整。 在任何情况下, 超长的语句应该在一个逗号或者一个操作符后折行。 一条语句折行后, 应该比原来的语句再缩进2个字符。
c.{} 对
{} 中的语句应该单独作为一行。 例如, 下面的第1行是错误的, 第2行是正确的:
if (i>0) { i ++ }; // 错误, { 和 } 在同一行 if (i>0) { i ++ }; // 正确, 单独作为一行
d.括号
左括号和后一个字符之间不应该出现空格; 同样, 右括号和前一个字符之间也不应该出现空格。 下面的例子说明括号和空格的错误及正确使用:
CallProc( AParameter ); // 错误
CallProc(AParameter); // 正确
不要在语句中使用无意义的括号,括号只应该为达到某种目的而出现在源代码中。
e.JSP文件命名
采用完整的英文描述说明JSP所完成的功能,尽可能包括一个生动的动词,第一个字母小写,如:viewMessage.jsp、editUser.jsp或者forumChooser.jsp等。
四.复合语句:
复合语句是包含在大括号中的语句序列,形如"{ 语句 }"。
- 被括其中的语句应该较之复合语句缩进一个层次
- 左大括号"{"应位于复合语句起始行的行尾;右大括号"}"应另起一行并与复合语句首行对齐。
- 大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分。这样便于添加语句而无需担心由于忘了加括号而引入bug。
1. 返回语句:一个带返回值的return语句不使用小括号"()",除非它们以某种方式使返回值更为显见。
2. 当在for语句的初始化或更新子句中使用逗号时,避免因使用三个以上变量,而导致复杂度提高。若需要,可以在for循环之前(为初始化子句)或for循环末尾(为更新子句)使用单独的语句。
3. 每当一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释。
五.编程惯例
1. 提供对实例以及类变量的访问控制
若没有足够理由,不要把实例或类变量声明为公有。通常,实例变量无需显式的设置(set)和获取(gotten),通常这作为方法调用的边缘效应 (side effect)而产生。
一个具有公有实例变量的恰当例子,是类仅作为数据结构,没有行为。亦即,若你要使用一个结构(struct)而非一个类(如果java支持结构的话),那么把类的实例变量声明为公有是合适的。
2. 引用类变量和类方法
避免用一个对象访问一个类的静态变量和方法。应该用类名替代。例如:
classMethod(); //OK
AClass.classMethod(); //OK
anObject.classMethod(); //AVOID!
3.常量:
位于for循环中作为计数器值的数字常量,除了-1,0和1之外,不应被直接写入代码。
4. 变量赋值
避免在一个语句中给多个变量赋相同的值。它很难读懂。例如:
fooBar.fChar = barFoo.lchar = 'c'; // AVOID!
不要将赋值运算符用在容易与相等关系运算符混淆的地方。例如:
if (c++ = d++) { // AVOID! (Java disallows)
...
}
应该写成
if ((c++ = d++) != 0) {
...
}
不要使用内嵌(embedded)赋值运算符试图提高运行时的效率,这是编译器的工作。例如:
d = (a = b + c) + r; // AVOID!
应该写成
a = b + c;
d = a + r;
5. 条件运算符"?"前的表达式
如果一个包含二元运算符的表达式出现在三元运算符" ? : "的"?"之前,那么应该给表达式添上一对圆括号。例如:(x >= 0) ? x : -x;
发表评论
-
java 压缩API
2012-10-16 09:53 929从 Java 支持压缩/解压缩开始,无法缺省支持中文文件名。 ... -
字符编码
2012-09-19 22:53 10231、Java文件编译后形成cl ... -
SSL
2012-06-01 07:27 996JAVA 双向SSL,SOCKET客户端/服务端 [/size ... -
XML选择器
2012-03-30 13:24 589xpath路径表达式笔记 http://www.rua ... -
异常体系
2012-03-27 22:20 673http://hi.baidu.com/hivemind/bl ... -
JAXB
2012-03-30 13:24 1091HashMap support: http://www.ch ... -
OS-WS-ARCH
2012-04-01 09:48 1021参数名称 描述 o ... -
线程文摘
2012-04-01 09:48 726ThreadLocal http://blog.csdn.n ... -
Java regex
2011-10-16 09:15 934(a(b)*) 匹配规则见下文红色描述 (a( ... -
使用TrueLicense来保护我们的JAVA软件产品
2011-05-06 11:05 1828我们的JAVA软件产品有时需要限制非法用户,只有购买了LI ... -
多线程-实战篇
2010-06-15 20:47 758在进入实战篇以前,我们简单说一下多线程编程的一般原则。 ... -
多线程-基础篇
2010-06-15 18:21 737写在前面 随着计 ...
相关推荐
华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1...
软件工程编码规范 软件工程编码规范是软件开发过程中的一种重要规范,其目的是为了确保软件的可读性、可维护性和可靠性。以下是软件工程编码规范的相关知识点: 1. 软件工程编码规范的目的 软件工程编码规范的...
Java、编码规范、Java编码规范、阿里巴巴、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里...
阿里巴巴编码规范试题答案 一、Java多线程编程 1. Java中的定时任务可以使用哪些方式实现?(BCDA) 答案:Java中的定时任务可以使用Timer、ScheduledExecutorService、TimerTask等方式实现。Timer可以实现简单的...
### 腾讯C++编码规范解读 #### 1. 概述 腾讯C++编码规范是一套由腾讯集团制定的、旨在规范公司内部C++编程风格的标准文档。该规范首次发布于2007年10月25日,目的在于确保所有使用C和C++语言开发的产品具有统一的...
### Android客户端编码规范详解 #### 一、引言 在软件开发过程中,编码规范的制定对于提高代码质量、增强团队协作效率以及维护项目的可持续性至关重要。Android客户端编码规范旨在为开发者提供一套统一的标准,...
《C++编码规范——华为实践》 在软件开发领域,编码规范是提升代码质量和团队协作效率的重要工具。尤其对于C++这种复杂的编程语言,遵循一套统一的编码规范显得尤为重要。华为作为全球知名的科技公司,其在C++编码...
### Python编码规范详解(基于Google风格指南) #### 一、概览 Python作为一种广泛使用的高级编程语言,其编码规范对于确保代码的可读性和一致性至关重要。Google作为业界领先的公司之一,发布了一份详细的Python...
编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范编码规范
C语言编码规范 C语言编码规范是编写高质量C语言代码的重要指南。遵守这些规则可以确保代码的可读性、可维护性和可靠性。本文将详细介绍C语言编码规范的各个方面,包括文件组织、命名约定、编程风格、注释、错误处理...
阿里巴巴java编码规范 ,Java 并发编程培训(阿里巴巴) 《阿里巴巴Java开发手册》,首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大...
### Vue前端编码规范详解 #### 一、概述 在现代前端开发中,特别是使用Vue框架进行项目构建时,遵循一套合理的编码规范对于提高代码质量、维护性和团队协作效率至关重要。本文将详细介绍Vue前端项目的编码规范,...
编码规范
在Python社区中,PEP8是指导Python代码格式的官方编码规范,它对如何组织代码提供了许多建议,以确保代码的可读性和一致性。PEP8主要是针对Python代码的风格指南,其目的不是强制要求,而是为了提高代码的可读性和可...
### JavaScript程序编码规范 #### 一、概述 《JavaScript程序编码规范》是一份旨在提高JavaScript代码质量和可维护性的指南。该规范由Douglas Crockford编写,并由cloudwater翻译成中文版。Crockford是一位著名的...
华为Java语言编码规范.doc 本文档介绍了华为Java语言编程规范的相关知识点,涵盖编程规范、命名规范、注释规范、编码规范、JTEST规则等内容。 1. 编程规范 编程规范是指在编程时必须遵守的原则,旨在确保代码的...
### C# 编码规范详解 #### 一、引言 C#作为一种广泛使用的面向对象编程语言,在软件开发中占据着举足轻重的地位。为了提高代码的可读性、可维护性和一致性,遵循一定的编码规范显得尤为重要。本文将根据提供的部分...
华为JAVA编码规范.pdf 华为JAVA编码规范.pdf是华为公司编写的JAVA编程语言编码规范,旨在提供一个统一的编程风格和代码组织方式,以提高代码的可读性、维护性和可重用性。该规范涵盖了编程语言的基本结构、命名规则...