命名规则
- 可扩展性。提供弹性架构,支持二次开发,能够适应业务流程的变化;系统应保证接口封装良好,能够为第三方开发商提供系统集成接口。
- 易操作性。提供简洁、美观、直白的用户界面。符合 windows 标准以及浏览器通用方式,具备中文支持功能,提供向导式系统安装界面。
- 稳定性。系统全年稳定运行 ,避免因升级而影响系统正常运行。宕机时间应少于 1%,平均故障间隔时间应超过三个月。
- 准确性。系统要对统计分析结果的正确性和完整性进行验证,并对系统的敏感数据进行特殊处理。
- 可维护性。系统要专设元数据管理模块,用于统一维护系统的公共数据。系统升级简便,具备错误问题远程分析与排除功能。
- 可管理性。每个层次、每个对象都应提供标准的管理接口或管理界面;每个构件应提供应用架构总体设计规定的标准外部接口。
- 安全性。系统应支持数据存储、数据传输、密钥管理等安全功能。提供所有系统操作日志记录,具备防止篡改的审计追踪功能,包括对系统参数、用户数据的增删操作,以及系统登录等其他重要操作,确保系统安全运行。
- 保障性。在系统因硬件、自然灾害或人为因素造成瘫痪情况下,要预先制定应急方案,可有效应对紧急情况,快速恢复系统运行。
- 系统应支持 HTTPS 网络协议。
# VUE 代码命名规范
命名规则: 采用小写英文字母命名, 多个单词之间使用中横杠分隔,后缀为文件类型的英文小写。
文档类型声明及编码: 统一为 html5 声明类型<!DOCTYPE html>
; 编码统一为<meta charset="utf-8" />
。
引入第三方 JS 库文件时, 文件名须包含库名称、版本号及是否为压缩版, 比如jquery-1.4.1.min.js
。
class
与id
命名: 样式名称由 小写英文 &
数字 &
-
来组合命名。
变量、函数命名: 驼峰式命名. 原生JavaScript
变量要求是纯英文字母, 首字母须小写, 如iTaoLun
;另, 要求变量集中声明, 避免全局变量。
类命名: 首字母大写, 驼峰式命名. 如 ITaoLun
命名语义化, 尽可能利用英文单词或其缩写,且名称尽量简短。
# JAVA 命名规范
代码中的命名均不能出现下划线或美元符号(下划线除常量外)。反例: name
/ __name
/ $Object
/ name
/ name$
/ Object$
。
代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
类名使用 UserController
风格,必须遵从驼峰形式。正例:UserController
/ UserService
反例:userController
/ userService
。
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase
风格,必须遵从 驼峰形式。正例: localValue
/ getHttbusinessessage()
/ inputUserId
。
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。正例: MAX_STOCK_COUNT
反例: MAX_COUNT
。
抽象类命名使用 Abstract
或 Base
开头;异常类命名使用 Exception
结尾;单元测试类 命名以它要测试的类的名称开始,以 Test
结尾。
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用 单数形式,但是类名如果有复数含义,类名可以使用复数形式。正例: 应用工具类包名为 net.greatsoft.ehr.util
、类名为 MessageUtils
(此规则参考 spring
的框架结构)。
杜绝完全不规范的缩写,避免望文不知义。反例: AbstractClass
“缩写”命名成 AbsClass
;condition
“缩写”命名成 condi
,此类 随意缩写严重降低了代码的可阅读性。
枚举成员名称需要全大写,单词间用下划线隔开。说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。 正例:枚举名字:DealStatusEnum
,成员名称:SUCCESS
/ UNKOWN_REASON
。
避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成 本,直接用类名来访问即可。
# 包命名规范
包命名应该遵循以下规则:
- 包名一律小写:模块名及功能名能用常见英文单词表示的可以用英文单词,不能的取模块名称的拼音首位,要求缩写不超过 5 个字母,名称超过 5 个字的取第 1,2,3,4 及最后一字的拼音首位;
- 应用开发生成的代码中,包的命名遵循“基本包名+模块名+层级名”的命名规则。应用模块命名规范为顶级域名
.greatsoft.应用系统缩写.(一级模块).(二级模块).(三级模块).(功能)
。
# 类命名规范
Class
的名字必须由首字母大写,采用驼峰式的命名方式,即每个单词首字母大写而其他字母都小写的。类名不可包含下划线。
Class
名字的形式一般应为:[形容词+]名词,且名词为单数形式。例如:RunTimeException
。
对于持久化实体,使用表义的单词来命名,例如User
、Org
、Role
等。如果实体名称由多个单词组成,则每个单词首字母大写,例如VillageDoctor
。
对于业务逻辑层的服务类一律采用 Service 的形式命名,其中是对应的实体的名称。例如VillageDoctorService
。
对于控制器,采用 Action 或者 Controller 的形式命名,其中是实体的名称。例如VillageDoctorAction
或者VillageDoctorController
。
# 资源文件命名规范
此处规则可根据应用开发过程中采用的具体框架进行调整,原则是保持命名规则的统一:
- 应用开发 SpringBoot 框架配置文件命名采用默认生成的“
模块名称.properties
”或“模块名称.yml
”的方式命名,存放路径是:模块/resources/config
,必须是以.properties
、.yml
、.xml
结尾; mybatis
或hibernate ORM
映射文件的命名采用默认生成的“实体名称.xml
”的方式命名,存放在/resources/mapper
或/resources/mybatis
或/resources/hibernate
下。
# 方法命名规范
方法名字的形式一般应为下列三种形式的一种:
- 副词+动词
- 动词+名词
- Is+形容词
第一个词汇全部小写,多个词汇时,采取驼峰式的规则。方法名中不允许出现下划线。
新增方法编写:方法名以save
开头+要新增的实体类名,参数为新增的实体对象(或根据实际情况添加其他参数),返回值可以根据实际情况选择是void
还是新增成功后的实体对象。例如:public void[User] saveUser(User user)
。
修改方法编写:方法名以update
开头+要修改的实体类名,参数为修改的实体对象(或根据实际情况添加其他参数),返回值根据实际情况选择是void
、boolean
或者修改成功后的实体对象。例如:public void updateUser(User user)
;
删除方法编写:方法名以delete
开头+要删除的实体类名。例如:public void deleteUser(User user)
;或者public void deleteUser(String id)
批量操作编写:方法名以batch
开头+要进行的操作。如:批量删除:batchDelete
。批量修改batchUpdate
。
查询方法编写:方法名以find
开头。例如findUser
,findAll
,findById
等。
# 变量命名规范
- 变量的名字必须是小写字母开头。采用驼峰式的命名方式;
- 变量的命名要有一定的语义,如果不是一目了然的单词最好带有简单的注释。不可采用”aaa”,”bbbb”这样的变量名称;
static final
变量名字应该全部大写,单词之间使用下划线。例如:USER_CACHE_KEY
;- 方法参数的名字的命名和变量的命名规范一致;
- 如果变量类型是数组,则总是按照下面的规则来命名:
String[] users
。而不是String users[]
。
# 其他
- 不要使用常数。常数很容易出错。例如函数的返回值是
0
代表成功,1
代表失败,那么在处理返回值时就不得不使用if(i==0)
这样的判断,将0
和1
弄混很容易,所以在必须使用常数的时候,对于公用性较强的常量请通知架构师在系统常量集合里面增加,反之在需要使用的类中自行定义。系统初始时会提供“时间格式”,“成功失败”,“分隔符”等一系列常量供大家使用。常量使得程序更易读。使用常量后,得到的一个额外好处是可使创建的代码更容易阅读。常数很不直观。也许你对常数非常了解,但其他人则根本看不明白。通过合理的给常量命名,使用这些常量的代码就变得比较直观了,更容易阅读。 - 定义有焦点的变量。用于多个目的的变量称为无焦点(多焦点)的变量。无焦点变量所代表的意义与程序的执行流程有关,当程序处于不同位置时,它所表示的意义是不固定的,这样就给程序的可读性和可维护性带来了麻烦。
- 使用肯定形式的布尔变量。给布尔变量命名时,始终都要使用变量的肯定形式,以减少其它开发人员在理解布尔变量所代表的意义时的难度。例如
exist
。 - 尽量缩小变量的作用域。如果变量的作用域大于它应有的范围,变量可继续存在,并且在不再需要该变量后的很长时间内仍然占用资源。它们的主要问题是,任何类中的任何方法都能对它们进行修改,并且很难跟踪究竟是何处进行修改的。占用资源是作用域涉及的一个重要问题。对变量来说,尽量缩小作用域将会对应用程序的可靠性产生巨大的影响。众所周知,Java 的垃圾回收是自动的,但 Java 中同样存在内存泄露的问题,对象的作用域过大很容易出现交叉引用,而交叉引用带来的后果就是内存泄露。