




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编码规范说明文档初稿作者:董文 20150910说明文档中使用红色字体标注的需要特别注意,要牢记。此文档版本是1.0,以后修改就可以命名为1.1,1.2等等,方便管理,看的时候只需要看最新版本就可以了。目录1 代码布局规则42 代码书写规则73 命名规则124 声明规则165 表达式和语句规则186 注释规则227 初始化和回收规则241 代码布局规则每一个Java源文件都包括一个公共的类或接口。当私有类或接口与公共类相关联的时候,通常可以将其与公共类放在同一个源文件当中。公共类应是文件中的第一个类或接口。类或接口的各部分代码顺序如下:Class或Interface 文档型注释采用 /*/ 型注释。Class或Interface声明类变量及变量实例变量出现的顺序为,首先公共变量,然后是package可见的变量,然后是protected变量。构造函数(Constructors)方法finalize(),如果有。public方法package可见方法protected方法private 方法内部类private字段main方法【规则1_1】 源代码文件(.java)的布局顺序是:包、import语句、源文件注释、类。正例:package com.zte;import java.awt.peer.CanvasPeer;import java.io.*;import com.zte.ums.uep.*;/* 文件名称: 题目名称* 文件描述: 简要描述本文件的内容,包括主要模块、函数及其功能的说明* author 作者姓名*/public class Test 【规则1_2】 在一个类中,布局顺序依次是:变量、构造方法、方法、内部类、main方法。正例:public class Test /变量定义public int x;Public String str;/无参构造方法public Test() /带参构造方法public Test(int x, String str) this.x = x;this.str = str;/自定义方法public int add(int a, int b) return a+b;/主方法Public static void main (String args) System.out.println(“编码规范”);【规则1_3】 构造方法有多个时,要依据参数少的在前面,参数多的在后面的原则编写代码,提高代码可读性。正例:public class Test /变量定义public int x;Public String str;/无参构造方法public Test() /带一部分参数构造方法public Test(int x) this.x = x;/带参构造方法public Test(int x, String str) this.x = x;this.str = str;【建议】 函数重载要集中在一起声明,提高代码可读性。正例:public class OGM void foo () void foo (int a) /正确void bar () void bab () 【规则1_4】 一个类的代码行不超过2000行。【规则1_5】 一个方法的代码行不超过300行。2 代码书写规则【规则2_1】每行只有一个句子,提高代码可读性。反例:public class OSPL int method (int a, int b) int i = a + b; return i; /违例 正例:public class OSPLFixed int method (int a, int b) int i = a + b; / 正确 return i; / 正确 【规则2_2】 每行不能超过120个字符。【规则2_3】 长表达式(超过120列)要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐。说明:断行方法: 在逗号后断行 在操作符前断行 较高级别断行优于较低级别的断行对齐方法: 将新行与同一级别的先前行的表达式的起始端对齐。 条件表达式的续行在第一个条件处对齐。 for循环语句的续行在初始化条件语句处对齐。 函数调用和函数声明的续行在第一个参数处对齐。 赋值语句的续行应在赋值号处对齐。 如果上述规则导致代码排列混乱或代码左边界少于两个缩进,可用两倍缩进替代。下面是一些断行方法调用的示例:正例:someMethod(longExpression1, longExpression2, longExpression3, longExpression4, longExpression5); var = someMethod1(longExpression1, someMethod2(longExpression2, longExpression3);下面是两个断行算术表达式例子,第一个是优选方法,因为断行出现在括号表达式之外,属于较高级别的断行。正例: longName1 = longName2 * (longName3 + longName4 - longName5) + 4 * longname6; /允许的断行方法反例: longName1 = longName2 * (longName3 + longName4-longName5) + 4 * longname6; /应该避免的断行方法下面是两个缩排方法的例子,第一个是传统的方式,第二个例子中如果采用传统方式缩排将导致第二行和第三行右边出现太多空白,因此,采用8个空格符替代。/传统的缩排方法,第二行与第一行的括号对齐。正例:someMethod(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) ./你代码的位置/由8个空格符来替代与括号对齐的方法,以避免第二行、第三行出现太多的空格符正例:private static synchronized horkingLongMethodName(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) ./你代码的位置对于if语句的行封装通常使用8空格规则,因为传统的4空格缩排方式使得有些语句容易被忽略掉,使if语句体难以理解。例如:反例:/不允许使用下面的缩进方法if (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) /不好的封闭 doSomethingAboutIt(); /这样对齐的封闭很容易让阅读的人忽略掉这一行正例:/宜采用下面的缩进方法(分成三行的情况)if (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) doSomethingAboutIt();/或使用下面的缩进方法(分成二行的情况)正例:if (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) doSomethingAboutIt();对于三重表达式,有三种方式可以对它进行格式化:正例:/单行的情况alpha = (aLongBooleanExpression) ? beta : gamma;/分成两行的情况,第二行的冒号与第一行的问号对齐。alpha = (aLongBooleanExpression) ? beta : gamma;/分成三行的情况,第二行的问号和第三行的冒号都与第一行的括号对齐alpha = (aLongBooleanExpression) ? beta : gamma;【规则2_4】 package语句后用空行和import语句分隔开。不同类别的import语句之间用空行分隔。说明:package语句其后可跟import语句,而且与package间隔一个空行。import包的排列顺序为java开头的包在最前面,接下来是引自外部的包,再接下来是应用程序自身的包,即import 中标准的包名要在本地的包名之前,而且按照字母顺序排列。如:正例:package com.zte;import java.awt.peer.CanvasPeer; /java自身的包import java.io;import com.klg.field; /第三方的包import com.zte.ums.uep; /程序自身的包【规则2_5】 “(”后面不能够有空格,”)”前面不能够有空格。【规则2_6】 定义方法时,方法名字和”( ”之间没有空格。反例:class MSP public void method () /违例 public void method1 () /违例 正例:class MSPFixed public void method() / 正确 public void method1 () / 正确 【规则2_7】 在声明方法中,形式参数之间(逗号以后)要有一空格,提高代码可读性。反例:public class SAC public void method (int i,int j) /违例正例:public class SAC public void method (int i, int j) /正确【规则2_8】 在for循环中语句中,分号之后要有一空格,提高代码可读性。反例:public class SAS public void method () for (int i = 0;i 10;i+) /违例System.out.println (i: + i);正例:public class SAS public void method () for (int i = 0; i 10; i+) /正确System.out.println (i: + i);【规则2_9】 对于非界面的程序,用大写标识符静态变量替代数字常量和字符串常量,避免直接使用数字常量,提高代码可读性。说明:指定的常量(final,static变量)的采用可以使得代码更容易被理解与维护当代码中使用如下的整型常量时,Jtest不报错:-1,0,1,2,3,4,5,6,7,8,9,10反例:class USN int getArray () return new int 1000; /违例正例:class USNFixed private static final int ARRAY_SIZE = 1000;int getArray () return new int ARRAY_SIZE; /正确【规则2_10】 import语句必须引用到具体的类。快捷键Shift+Ctrl+O引入所需要的包说明:在某些不同的包下,可能存在相同的类名,如果不指明具体的类名称,可能会引起潜在的错误。反例:import java.util.*;正例:import java.util.Hashtable3 命名规则命名规范的目的是提高程序的可读性,使程序易于理解。命名的基本原则:使用完整的英文描述符准确描述变量variable/域field/类class较好的命名应该象firstName、grandTotal、CorporateCustomer, 而诸如x1、y1等命名反映任何命名含义,而且造成代码难以理解、维护和改进。采用应用领域相关的术语来命名软件开发人员应注意软件用户的一些约定术语,不应当随意的创造术语。这会降低软件的易维护性。采用大小写混合的方式提高命名的可读性一般情况下应该用小写字母来命名,其中类(class)和接口(interface)名称的首字母用大写。谨慎使用缩写设计命名中应该慎用缩写命名。如要采用,则应采用统一的缩略规则,并且在文中的相应部分统一采用缩写。例如,采用num作为number的缩写,那么在整个文档中应该始终使用该缩写。避免太长的命名命名的长度一般小于30个字母,最好不要超过15个字母。避免采用仅有大小写不同命名命名时应避免采用几乎相同的名称。例如,变量名称persistentObject和persistentObjects不应当同时运用;anSqlDatabase和anSQLDatabase也不应同时使用。将标准缩略词的首字母进行大小写变化有时名称中会含有固定的缩略词,例如SQL代表Standard Query Language. 而在命名时sqlDatabase和SqlDatabase就比sQLDatabase和SQLDatabase易于阅读。避免下划线命名【规则3_1】保证包名全部用小写字母命名,在构成包名的单词之间不用下划线。说明:包名是一个顶级域名(如当前的com,edu,gov,mil,net,org)或服从ISO Atandsrd 3166,1981中规定的两英文字母国家标识符。包名称的随后成份根据组织自身的命名规范变化。这样的规范或许通过指定分公司、部门、项目、机器、帐户等来确定目录名成分。请看下面的示例说明:com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese【规则3_2】 类名首字母大写,构成类名的单词之间用大小写分割,之间不用下划线。【规则3_3】 方法名称应采用完整的英文单词组成,首字母小写,在构成方法名的单词之间不用下划线。【规则3_4】常量静态字段全部用大写字母,构成标识符的多个单词之间用下划线分隔。反例:class USF public static final int size = 10; /违例正例:class USFFixed public static final int SIZE = 10; /正确【规则3_5】非静态、常量字段,包括全局变量和局部变量首字母小写。【规则3_6】方法参数的首字母小写。【规则3_7】 以get打头的方法不能返回boolean值。反例:public class GETA private int _count = 100;public int method () /违例return _count;正例:public class GETAFixed rivate int _count = 2; /正确public int getCount () return _count;【规则3_8】 获取器方法返回值是boolean型的要以”is”,”have”,”can”,”has”打头,提高代码可读性。反例:public class GETB private boolean _ready = false;public boolean method () /违例return _ready;正例:public class GETBFixed private boolean _ready = false;public boolean isReady () /正确return _ready;【规则3_9】 用”is”,”have”,”can”,”has”打头的方法必须返回boolean型.反例:public class IRB private int _value;public int isOK () /违例return _value;正例:public class IRBFixed private boolean _value;public boolean isOK () /正确return _value;【规则3_10】 避免方法内的局部变量名称和类成员变量同名,提高代码可读性。反例:public class HMF private int i = 0;public void method () final int i = 5; /违例System.out.println (i);正例:public class HMFFixed private int i = 0;public void method () final int x = 5; /正确System.out.println (x);【规则3_11】 避免类成员变量的名字和方法中的参数同名,提高代码可读性。反例:public class MPC private int i = 0;void method (int i, int j) /违例void j() 正例:public class MPCFixed private int i = 0;void method (int first, int second) /正确void j() 4 声明规则【规则4_1】 避免在一个声明语句中声明多个不同类型变量,比如一个整型变量,一个整型变量数组;避免在一个声明语句中声明多个变量,同时方便注释。反例:class VDTprivate int index, index1; /违例:一个整型,一个整型数组public void method ()int aaa, bbb; /违例:一个整型,一个整型数组 int ccc; int ddd; class MVOS String s1,s2; /违例:同一个声明语句声明两个变量public MVOS()s1 = hello;s2 = world;正例:class VDT private int index,private index1; /正确public void method () int aaa,int bbb; /正确 int ccc; int ddd; class MVOS String s1; /正确String s2; /正确public MVOS() s1 = hello;s2 = world;【建议】 变量声明只应该放在代码段的开始部分。最好不要到使用时才声明变量。【规则4_2】在循环体中避免声明变量,提高代码运行性能。【规则4_3】不能声明Date类型数组,因为Date相对占有较大空间,这样节约资源,优化代码。【建议】 对于一个子系统的代码,在一个接口中定义所有常量,提高代码的可维护性。说明:在一个类定义所有常量和在一个接口中定义所有常量没有什么区别,由用户来决定。反例:class DCI static final int MAX = 1000; /违例int getMax () return MAX; 正例:class DCI int getMax () return Constants.MAX; interface Constants int MAX = 1000;【规则4_4】 保证内部类定义成pivate,提高类的封装性。【规则4_5】 避免定义未使用的局部变量,优化代码。5 表达式和语句规则【规则5_1】 If语句和else语句写成 代码块。反例:public class BLKIF public void method (boolean b) if (b) /违例System.out.println (inside of if);else /违例System.out.println (OUTSIDE of if);正例:public class BLKIF public void method (boolean b) if (b) /正确System.out.println (inside of if);else /正确System.out.println (OUTSIDE of if);【规则5_2】 for、while循环语句写成 代码块反例:public class BLKFORpublic void method () for (int i = 0; i 10; i+) /违例System.out.println (i * i); /在循环内部System.out.println (i); /在循环外部正例:public class BLKFORFixed public void method () for (int i = 0; i 10; i+) /正确System.out.println (i * i); /在循环内部System.out.println (i); /在循环内部【规则5_3】 在for循环语句体中,避免对循环控制变量赋值。反例:public class FLVA int method () int sum = 0; for (int i = 0; i 100; i+) i += 3; /违例 sum += i; 正例:public class FLVA int method () int sum = 0; for (int i = 0; i 100; i += 4) /正确 sum +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年病历管理制度与病历书写规范考试题及答案
- 2025年电力安全知识竞赛试题库及答案
- 2025年内蒙古自治区事业单位招聘考试计算机类综合能力测试真题模拟解析
- 2025年黑龙江事业单位招聘考试综合类专业能力测试试卷(管理类)真题模拟
- 2025年甘肃酒泉肃州区教育事业发展服务中心选拔工作人员模拟试卷参考答案详解
- 事业单位招聘考试综合类公共基础知识真题模拟试卷(2025实战冲刺高效模拟训练)
- 情感计算模型-第2篇-洞察与解读
- 汽车零部件质量检测协议
- 恒丰入学考试试题及答案
- 河南省数学考试题及答案
- 女生的青春期教育课件
- 2023新能源集控中心及智慧电厂建设方案
- 人工智能(基础版)高职人工智能基础课程PPT完整全套教学课件
- 10胃十二指肠溃疡临床路径表单
- 高标准农田施工组织设计(全)
- 5-4、MSSP - SOTAR - 泰康人寿 5-4、MSSP - SOTAR - 泰康人寿
- 小餐饮备案承诺书(样式)
- 学法减分100道题题库及答案(驾驶证学法减分学法免分题库及答案)
- 《安娜·卡列尼娜》-课件-
- 2022年新版体系文件药品零售单体连锁总部质量管理体系文件
- 校服登记表模板
评论
0/150
提交评论