命名规范

1、一般概念

1、尽量使用完整的英文描述符

2、采用适用于相关领域的术语

3、采用大小写混合使名字可读

4、尽量少用缩写,但如果用了,必须符合整个工程中的统一定义

5、避免使用长的名字(小于 15 个字母为正常选择)

6、避免使用类似的名字,或者仅仅是大小写不同的名字

7、避免使用下划线(除静态常量等)

2、标识符类型说明

1、包( Package )的命名

Package 的名字应该采用完整的英文描述符,都是由一个小写单词组成。并且包名的前缀总是一个顶级域名,

通常是 com、edu、gov、mil、net、org 等;

如: com.yjhmily.test

2、类( Class )的命名

类名应该是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量保证类名简洁而富于描述。

使用完整单词,避免缩写词 ( 除非工程内有统一缩写规范或该缩写词被更广泛使用,像 URL , HTML)

如: FileDescription

3、接口( Interface )的命名

基本与 Class 的命名规范类似。在满足 Classd 命名规则的基础之上,保证开头第一个字母为 ”I”,

便于与普通的 Class区别开。其实现类名称取接口名的第二个字母到最后,且满足类名的命名规范;

如: IMenuEngine

4、枚举( Enum )的命名

基本与 Class 的命名规范类似。在满足 Classd 命名规则的基础之上,保证开头第一个字母为 ”E” ,

便于与普通的 Class区别开。

如: EUserRole

5、异常( Exception )的命名

异常( Exception ) 通常采用字母 e 表示异常,对于自定义的异常类,其后缀必须为 Exception

如: BusinessException

6、方法( Method )的命名

方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。

方法名尽可能的描述出该方法的动作行为。返回类型为 Boolean 值的方法一般由“ is ”或“ has ”来开头

如: getCurrentUser() 、 addUser() 、 hasAuthority()

7、参数( Param )的命名

第一个单词的首字母小写,其后单词的首字母大写。参数量名不允许以下划线或美元符号开头,

虽然这在语法上是允许的。参数名应简短且富于描述。

如: public UserContext getLoginUser(String loginName);

8、常量字段 ( Constants )的命名

静态常量字段( static final ) 全部采用大写字母,单词之间用下划线分隔;

如: public static final Long FEEDBACK;

public static Long USER_STATUS;

1. 风格务必保持一贯性(Consistent)

一位同胞顶着我的鼻子问,为什么我们的Java代码缩进格式非得是这样,而不能是他那样,他就是喜欢他自己的这一种,因此他写的代码总是用他自己习惯的风格。结果在Code Review里被大家毙掉,责令修改。因此他是大大地不服。就是风格一贯性问题。其实他的风格,本来也没有什么问题,但在项目里,和其他程序员的程序的风格,显得扃异,那就存在问题了。比如这个缩进,又比如变量命名方法,不同的类,不同的Methods里,各自不同,这程序就很难看了。所以一旦你选择了某种风格,一定要贯彻始终。如果一个项目里规定了一个风格,即便很不符合你自己的习惯,也要贯彻始终,绝不应该有标新立异。

2. 缩进风格(indent)

既然是从缩进说起,就先说说缩进风格;一般来说,象Java这样的类C语言,都采用缩进风格。而常用的,有四种

A.K&R风格

这是C程序最早的缩进风格,由C的发明者Ritchie和他的合作者Kernighan率先使用:

if () {

}

其特点,是大括号和if判断在同一行。通常,缩进为8个空格或一个tab键,但在C++和Java里,也常缩进4个空格。有人喜欢用两个空格,窃以为不好,不明显。

B. BSD 风格

又称Allman Style,源自Unix BSD程序员Eric Allman--他为BSD写过很多程序:

if ()

{

}

特点:大括号和条件判断分在两行。

C. Whitesmith风格

这种风格源于Whitesmith C:

if ()

{

}

D. GNU风格

这种风格仅见于GNU EMACS的源程序中:

if ()

{

}

那么在Java里用哪种好呢?建议只采用A或B。SUN有一个Java Code Name Convention,建议的是A。

3. Tab还是空格(Tabs vs Space)

还是缩进问题。那么一次缩进应该多大距离?是八个空格键,还是一个Tab键?

Java有一个特点,就是跨平台性。不过跨平台指的是它的Class可以在不同平台的虚拟机上运行。Java的源程序,有时候可不是跨平台的。什么?源程序还能不跨平台?是的。有次一个程序员送来一些Code,在我的环境里打开,程序难看得一塌糊涂,有该缩进的地方,没有缩进,有的则缩进一大截,如同怪石一样,嶙峋参差。这样的代码质量可不行!叫来程序员一问,答曰在他那里漂亮得很啊,他还专门花时间去美化它们了呢?

原来他的缩进没有注意一个风格,在有的地方用Tab键,有的地方打空格。在一些不同的平台上,Tab键的宽度可是不一样的。

说道这里,相信大家比较清楚了,在缩进的时候,尽量不用Tab,而是用空格。好在许多编辑器,都可以把你的键盘上的Tab键定义成几个空格。赶紧去定义它!

每次用多少空格呢?4个。2个太少不明显,8个太多占空间。

4. 行宽

说道8个空格键占空间,那么我一行有320列,8个空格算什么?打住!请寄住,一行尽量不要超过80列。许多终端一个屏幕只能显示80列,为它们想想巴。如果你的语句太长,想办法折断它,分几列来写。

5. 变量命名

SUN Java Code Convention里定义了Java里package, class, method和普通变量的命名规则,我就不用再浪费字节了。这里提提一些注意事项和一些SUN没提到但大家常用的方式。

a. 用有意义的名字命名变量

首先,用完整的英语单词或约定俗成的简写命名你的变量,如:

firstName

zipCode

如果英语不够好,至少用别人看得懂的拼音命名,如

zhuZhi (住址)

胡乱简写,或者胡乱命名,则没有人看得懂你的变量的含义:

fn

zc

zz

b. 常量用全大写加下画线命名

Java里的常量,就是static final:

static final SMTH_BBS="bbs.tsinghua.edu.cn";

c. 用复数命名collection类变量

collection包括数组,vector等。命名时请用复数:

customers

classMates

也可以用一些修饰词命名:

someStudents

allDepartments

d. 循环变量

一般大家都用i, j, k等做循环变量。

e. Stream变量

一般习惯用in, out作为Stream变量,对应inputStream, outputStream

类。如果即读又写的ioStream,可以用inOut。

f. 变量的命名习惯

习惯MFC的人喜欢采用匈牙利命名法(Hungarian Notation)。如果你习惯这样,尽管用,但注意要和同Project的人保持一致。还有些人习惯C++里的下画线方式,也可以采用。

Hungarian Notation:

sFirstName

Under Score Style:

_firstName

这里提供一个Hungarian Notation的前缀命名习惯:

int                     i

byte                  b

char                  c

double              d

float                  f

long                  l

offset                off

length               len

Object              o

String               s (or str)

Arbitray value    v

6. Java文件格式

有许多方式定义你的文件语句格式,以下是一个例子:

a. 文件头说明 (可无)

b. Package定义

c. 空行

d. Import语句

e. 空行

f. 类定义

如:

package com.midi;

//Java Classes

import java.awt.*;

import java.io.*;

import javax.swing.event.*;

//WebLogic Classes

import weblogic.internal.*;

/**

* Blah blah

* @author midi

* @version 22.2

*/

public class MyFirst extends JFrame {

...

}

/**

* Foo...

* @author midi

* @version 38.2

*/

class Foo {

...

}

7. import顺序

杂乱无章的顺序,看起来很不顺眼。应该对你要import的classes归类,按顺序罗列:

a. Java标准类(java.*)

b. Java扩充类(javax.*)

c. 第三方类

d. 你的应用程序的类

而且注意在第三方类里注释它们,说明它们的来源:

import java.*;

import java.util.Date;

import java.util.Enumeration;

import javax.sql.*;

//Apache Xerces

import org.apache.xml.*;

import org.apache.xerces.dom.*;

//Application classes

import com.midi.util.*;

8. Classes的顺序

a. Javadoc注释或者其它文件头注释

b. 类声明

c. Fields声明

d. 空行

e. 构造函数

f. 空行

g. 方法(不包括main)

h. 空行

i. Inner类

j. 空行

k. main()

例:

/**

* This is a simple DOM tree XML parser...

* ...

* @author: midi

* @version: 0.0.1

**/

public class MyParser {

// public constants

public static final String TITLE = "MyParser";

public static final String VERSION = "0.0.1";

// Private variables

private int iSchemaVersion;

/**

* Constructor

*/

public MyParser () {

iSchemaVersion = 1;

}

/**

* Constructor

* @param...

*/

public MyParser (iSchemaVersion) {

this.iSchemaVersion = iSchemaVersion;

}

/**

* Initialize the parser...

*/

public void myInit () throws Exception {

....

}

/**

* start the application

*/

public static void main (String[] argvs) {

...

}

}

9. Field定义

请遵从以下顺序:

a. Public常量

b. Public变量

c. Protected常量

d. Protected变量

e. Package常量

f. Package变量

g. Private常量

h. Private变量

java的书写规范_JAVA书写规范相关推荐

  1. java的书写规范_java书写规范以及技巧

    一. Java命名的一般性指导 1. 类名首字母应该大写.属性(成员变量).方法.对象变量以及所有标识符(如形式参 数.实际参数.局部变量)的首字母应小写,其中包含的所有单词都应紧靠在一起,而 且大写 ...

  2. java 虚拟机规范_Java虚拟机规范----Java虚拟机结构

    Java体系和一些基本概念 Java平台的结构图: JVM与JRE.JDK关系? JVM:Java Virtual Machine(Java虚拟机),负责执行符合规范的Class文件 JRE: Jav ...

  3. java 异常 规范_java 异常规范

    异常规范 异常介绍 Throwable 所有Exception和Error的父类. Error 致命错误. 项目自身存在问题, 诸如格式有问题, 编译版本不对, 堆栈溢出等, 项目在出现ERROR的情 ...

  4. java高级规范_Java高级规范之二

    二十一.提交java代码前应该检查是否有没用的语句,如:System.out.println(); jsp页面上面是否有alert调试信息 不规范示例:暂无 规范实例:暂无 解析:因为如果保留了有可能 ...

  5. java标签组件命名_java编程规范之java命名规范

    想要成为一个优秀的程序员,首先要培养良好的编程习惯,为了提高代码的可读性,必须有好的命名规范. 这篇文章是小编结合网上的很多资料整理出来的,若有不当或错误的地方,欢迎大家指正 在文章开始前,为方便阅读 ...

  6. java的命名规则_Java命名规范

    命名规范 本规范主要针对java开发制定的规范 项目命名 项目创建,名称所有字母均小写,组合方式为:com.leadal.$projectName.$component.$hiberarchy. $p ...

  7. java 方法命名规范_Java命名规范

    一.命名规范 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. 如:public class MyFirstClass{} 4. 变量 ...

  8. java的注释规范_Java 注释规范

    基本的要求: 1.注释形式统一 在整个应用程序中,使用具有一致的标点和结构的样式来构造注释.如果在其它项目中发现它们的注释规范与这份文档不同,按照这份规范写代码,不要试图在既成的规范系统中引入新的规范 ...

  9. java的编程规范_JAVA编程规范-OOP规范

    1.[强制]避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成 本,直接用类名来访问即可. 2.[强制]所有的覆写方法,必须加@Override注解. 反例:getObject ...

最新文章

  1. java filter注入_如何使用Filter过滤请求中的SQL注入攻击
  2. org.hibernate.service.ServiceRegistryBuilder被弃用
  3. mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql
  4. [转]关于Python里的类型注解
  5. msdn下载win11的方法,简单易操作
  6. 为什么有了scanf还要getchar()
  7. 替代top的系统监控工具glances
  8. 【超图+CESIUM】【基础API使用示例】34、超图|CESIUM - 绘制光流流光线段
  9. java实现马尔科夫链,马尔科夫链算法的JAVA实现
  10. 匿名邮件实现的方式及原理
  11. 吐槽国内各大公司的漏洞报告平台
  12. 数位板使用技巧、个人数位板见解、插画教程...
  13. 试验设计[实验设计]
  14. 在本地电脑运行vue-element-admin
  15. wp网站,wordpress网站搭建,wp网站建设教程
  16. android闹钟报告分析,Android AlarmClock 闹钟应用 简单分析
  17. c++求三个数中的最大值和最小值
  18. Pycharm 实现本地与服务器代码同步
  19. HTML5在手机端如何全屏展示
  20. 在win10系统安装linux系统,win10系统安装Linux子系统的操作方法

热门文章

  1. word2vec词向量原理
  2. 基于WSL搭建ESP8266开发环境
  3. JWT实战 Spring Security Oauth2整合JWT 整合SSO单点登录
  4. 前端单元测试之Jest
  5. 企业信息化有什么价值?如何实现?
  6. 腾讯云基础认证是什么?多少分通过?
  7. android 高性能手机排行榜,2020年9月安兔兔Android旗舰手机性能跑分排行榜前十名推荐榜单...
  8. 使用TeXpad iOS实现移动办公(二)
  9. FFT(傅里叶快速变换算法)计算频率
  10. 01-死磕QNX someip