命名规则
- 可扩展性。提供弹性架构,支持二次开发,能够适应业务流程的变化;系统应保证接口封装良好,能够为第三方开发商提供系统集成接口。
- 易操作性。提供简洁、美观、直白的用户界面。符合 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 中同样存在内存泄露的问题,对象的作用域过大很容易出现交叉引用,而交叉引用带来的后果就是内存泄露。
