是由二个或多个单字连结在一起,而构成的唯一识别字时,利用“驼峰式大小写”来表示,可以增加变量和函式的可读性。 驼峰式命名法分大驼峰式命名法(UpperCamelCase)和小驼峰式命名法(lowerCamelCase)。 大驼峰式命名法(upper camel case)每一个单字的首字母都采用大写字母,例如:FirstName、LastName、CamelCase,也被称为 Pascal 命名法。 小驼峰式命名法(lower camel case)第一个单字以小写字母开始,第二个单字的首字母大写。例如:firstName、lastName。 2 K & R 风格 对于非空块和块状结构,大括号遵循Kernighan和Ritchie风格 - - - - 左大括号前不换行 左大括号后换行 右大括号前换行 如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。例如,如果右大括号后面是else或逗号,则不换行。 示例: return new MyClass() { @Override public void method() { if (condition()) { try { something(); } catch (ProblemException e) { recover(); } } } }; 3 魔术数字 魔术数字(magic number)是程式设计中所谓的直接写在程式码里的具体数值(如“10”,“123”等以数字直接写出的值)。虽然程式作者写的时候自己能了解数值的意义,但对其他程式员而言,甚至制作者本人经过一段时间后,会难以了解这个数值的用途,只能苦笑讽刺“这个数值的意义虽然不懂,不过至少程式会动,真是个魔术般的数字”而得名。 4 CAS机制 CAS,又称Compare-and-Swap,是多线程中实现同步的一种原子指令。拿到一个新值后,CAS将其与内存中的值进行比较,若内存中的值和这个值不一样,则将这个值写入内存,否则,不做操作。
1
2. 命名规范
2.1. 包名
? 规则
1) 包名用公司域名倒置+产品名称/项目名称+模块名称。
2) 包名全部小写,连续的单词只是简单地连接起来,不使用下划线,用有意义的英文名词,禁止使用汉语拼音。
3) 使用完整单词,避免缩写词(除非该缩写词被广泛使用,如URL,HTML)。
示例:
com.ai.crm.res 2.2. 类名
? 规则
1) 类名都以大驼峰风格编写,采用大小写混合的方式,每个单词的首字母大写。 2) 类名选取有意义的代表该类实际含义的名词或名词词组,要求为英文单词,禁止使用汉语拼音。
3) 使用完整单词,避免缩写词(除非该缩写词被广泛使用,如URL,HTML)。
示例:
class Raster; class ImageSprite; class Operator; class URLHandler; ? 建议
1) 对于抽象类,应该使用Abstract前缀。
示例:
2
AbstractDataAccess; 2) 接口命名使用字母“I”开头。
示例:
IDataAccess; 3) 接口的实现类建议以Impl结尾。
示例:
DataAccessImpl; 2.3. 方法名
? 规则
1) 方法名都以小驼峰风格编写,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。 2) 方法名通常是动词或动词短语。
示例:
run(); runFast(); getBackground(); 3) 构造函数名称与类名一致,避免在类中有与构造函数相同命名的方法名称。 ? 建议
1) 方法名称命名格式建议如下:
特殊method名称 is+<标识符> 说明 ? 用于判断一个标志位的method。 ? 返回一个布尔值。 ? 用于判断能否执行一个动作。 ? 返回一个布尔值。 ? 用于取得一个属性或一个值。 ? 用于设置一个属性或一个值。 isAlive 举例 can+<标识符> canSleep get+<标识符> set+<标识符> getProperty setProperty
3
2) 成员函数的控制符号要准确,不是必须使用public属性的应该使用
protected,不是必须使用protected的应该使用private.
2.4. 常量名
? 规则
1) 常量名,应该全部大写,单词间用下划线隔开,并用static final修饰词修饰。 2) 常量名通常是名词或名词短语。
示例:
static final int MIN_WIDTH = 4; static final int MAX_WIDTH = 999; static final int GET_THE_CPU = 1; 3) 不允许在代码中使用魔术数字,请定义成常量再使用常量的名称。特殊情况除外,如:for循环中作为计数器值的数字常量-1,0和1。 如使用错误的魔术数字: if (score>100){
doBusiness(); } ? 建议
使用范围广的常量统一放在一个类里面定义。
2.5. 变量名
? 规则
变量名以小驼峰风格编写,必须是名词或名词短语。 ? 建议
1) 一个集合,例如数组或者列表,应该以复数的形式命名。
示例:
customers
4
orderItems 2) 不使用public修饰符定义变量。
3) 如果在实际应用中整个名字太长,可以考虑采用适当的缩写方式。
例如:去掉元音字母,保留辅音字母:用msg代替message,用mgr代替manager。 截取字母的一部分:用prop代替properties,用max代替maximum。
4) 对于一些固定的缩写(如:SQL等),其字母大小写规则按照其固定规则书写。
2.6. 参数名
? 规则
1) 参数名以小驼峰风格编写。 2) 参数应该避免用单个字符命名。
2.7. 局部变量名
? 规则
1) 局部变量名以小驼峰风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写,不使用下划线开头,不使用拼音。 2) 避免用单字符进行命名,除了循环变量。
3) 局部变量名称不能与类属性名称以及公有方法参数名称相同。
示例:
float width; //良好的风格 float myWidth; //良好的风格
float _width; //不良的风格(使用下划线开头) float changdu; //不良的风格(使用拼音) ? 建议
尽可能在定义变量的同时初始化该变量(就近原则)。
5