Skip to main content

Style Guide

  • 由于 Java 面向对象编程的特性, 在命名时应尽量选择名词
  • 驼峰命名法 (Camel-Case)
    • 当变量名或函式名是由一个或多个单字连结在一起, 而构成的唯一识别字时, 首字母以小写开头, 每个单词首字母大写 (第一个单词除外).

Package

推荐使用公司或机构的顶级域名为包名的前缀, 目的是保证各公司/机构内所使用的包名的唯一性. 包名全部为小写字母, 且具有实际的区分意义:

  • 选择有意义的名字, 能快速地传达该类的用途.
  • 所有包的命名必须采用小写英文字母.

应用系统中经常应用分层, Dao 层 (数据库访问)、Service 层 (业务处理)、Web 层 (页面控制 action 类)

  • 包名的前几个为固定名称, 如果是网站的话, 采用网站的域名的反写, 如果域名还没有确定的话, 采用公司固定的几个名称. 如: net.vschool.
  • 在包名的接下来一个单词为模块的名称. 如: 用户模块, 包名为 net.vschool.user
  • 关于模块的访问操作, 采用分层形式,一般分为:

Dao 层操作: 一般定义在 net.vschool.xxx.dao 中, 其中 xxx 为模块名称. Service 层操作: 一般定义在 net.vschool.xxx.service 中. web 层操作: 一般定义在 net.vschool.xxx.action 中.

net.vschool.user
net.vschool.user.dao
net.vschool.user.action
net.vschool.user.service

Class

类名必须使用名词, 如果一个类名内含多个单词, 那么各个单词第一个字母大写, 后续字母小写, 起伏呈驼峰状, 人称驼峰式命名. 给类名命名时, 必须保证准确、简洁且容易理解. 尽量使用完整单词, 避免使用缩写词 (除了大家公认的):

  • 选择有意义的名字, 能快速地传达该类的用途.
  • 参照 Java 驼峰命名法, 类名的首字母必须采用大写的形式, 如果类名为多词组合而成的话, 那么每个词的首字母必须采用大写. 如: StudentAnswer.java.
  • 当要区别接口类和实现类的时候, 可以在类的后面加上 Impl.
  • 推荐实体类没有后缀名.
  • public class 应与 .java 文件同名.

应用系统中经常应用分层, Dao 层 (数据库访问)、Service 层 (业务处理)、Web 层 (页面控制 action 类), 每一层的类的名称尽量带上该层后缀.

  • Dao 层
    • 接口类: 采用 JavaBean+Interface+Dao 的形式来定义,即, 实体对象+Interface+Dao
    • 实现类: 采用 JavaBean+Interface+Impl+Dao 的形式来定义,即, 实体对象+Interface+Impl+Dao
  • Service 层
    • 接口类: 采用 Xxx+Interface+Service 的形式来定义,即, 模块+Interface+Service
    • 实现类: 采用 Xxx+Interface+Impl+Service 的形式来定义,即, 模块+Interface+Impl+Service
  • Web 层 (action 类)
    • 实现类: 采用县 Xxx+Operator+Action 的形式来定义,即, 模块+操作+Action

Variable

  • 选择有意义的名字, 能快速地传达该变量的用途.
  • 参照 Java 驼峰命名法, 首字母以小写开头, 每个单词首字母大写 (第一个单词除外).

Normal

  • 变量命名采用基本结构为 typeVariableName, 使用 3 字符前缀来表示数据类型.
    • 做数组用时, 再加前缀-a,如字符串数组: astr,
    • 自定义类型的变量可以采用本身的名称, 把首字母改为小写.
    • 采用名称要能代表在方法中的意义. 如果员工列表: employeeList
原词缩写
bytebyt
charchr
floatflt
booleanbln
Integer/intint
shortsht
Long/longlng
Double/doubledbl
stringstr
  • 在一段函数中不使用同一个变量表示前后意义不同的两个数值.
  • 除非是在循环中, 否则一般不推荐使用单个字母作为变量名, i、j、k 等只作为小型循环的循环索引变量.
  • 避免用 Flag 来命名状态变量.
  • 用 Is 来命名逻辑变量, 如: blnFileIsFound. 通过这种给布尔变量肯定形式的命名方式, 使得其它开发人员能够更为清楚的理解布尔变量所代表的意义.
  • 如果需要对变量名进行缩写时, 一定要注意整个代码中缩写规则的一致性. 例如, 如果在代码的某些区域中使用 intCnt, 而在另一些区域中又使用 intCount, 就会给代码增加不必要的复杂性. 建议变量名中尽量不要出现缩写.

Static

  • 选择有意义的名字, 能快速地传达该变量的用途.
  • 参照 Java 驼峰命名法, 采用全部大写的形式来书写, 对于采用多词合成的变量采用-来连接各单词. 如: USER_LIST

Method

  • 选择有意义的名字, 能快速地传达该方法的用途.

  • 参照 Java 驼峰命名法, 首字母以小写开头, 每个单词首字母大写 (第一个单词除外).

  • 方法表示一种行为, 它代表一种动作, 最好是一个动词或者动词词组或者第一个单词为一个动词.

  • 属性方法: 以 get/set 开头, 其后跟字段名称, 字段名称首字母大写. 如: getUserName()

  • 数据层方法: 只能以 insert (插入), delete (删除), update (更新), select (查找), count (统计)开头. 他层方法避免以这个 5 个单词开头, 以免造成误解.

  • 服务层方法, 根据方法的行为命名, 只描述方法的意义, 而不采用方法的目的命名. 比如系统的添加新用户, 用户可以前台注册, 也可以管理员后台添加, 方法会被重用, 所以最好不要用使用 register, 采用 add 会更好写. 避免使用与 web 层相关的方法.

  • Web 层方法最好是贴近 web 的语言, 如 register, login, logout 等方法.