8、枚举类名建议带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开。 9、各层命名规约: A) Service/DAO层方法命名规约 1) 获取单个对象的方法用get做前缀。 2) 获取多个对象的方法用list做前缀。 B) 领域模型命名规约 1) 数据对象:xxxDO,xxx即为数据表名。 2) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。 method(“a”, “b”, “c”); 17、IDE的text file encoding设置为UTF-8; IDE中文件的换行符使用Unix格式,不要使用windows格式。 8) 类成员方法只对继承类公开,那么限制为protected。
参考链接: Java命名约定 一命名规约 1. 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 正例:接口方法签名:void f();接口基础常量表示:String COMPANY = “alibaba”; 反例:接口方法定义:public abstract void f(); 说明:JDK8 【参考】各层命名规约: A) Service/DAO 层方法命名规约 1) 获取单个对象的方法用 get 做前缀。 2) 获取多个对象的方法用 list 做前缀。 B) 领域模型命名规约 1) 数据对象:xxxDO,xxx 即为数据表名。 2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。 public Enum{ MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5),SATURDAY(6), SUNDAY(7);} 三 格式规约
a, Object b) Java7 源码如下所示: public static boolean equals(Object a, Object b) { return (a Java 世界里相等请用equals方法,== 表示对象相等,一般在框架开发中会用到。 8. 【强制】任何货币金额,均以最小货币单位且为整型类型进行存储。 9. 8)类成员方法只对继承类公开,那么限制为 protected。 说明:任何类、方法、参数、变量,严控访问范围。过于宽泛的访问范围,不利于模块解耦。 参考(References) 《1. 2022 Java开发手册(黄山版).pdf 《设计模式之禅 第1版》 《Java技术手册 第6版》 《编写高质量代码:改善Java程序的151个建议》 白话阿里巴巴 Java开发手册(安全规约) - 李艳鹏 - 简书(https://www.jianshu.com/p/9528c4ea1504)
【实例简介】电网104规约解包java代码 项目是围绕电网规约101规约(DL/T634.5101-2002)和104规约(DL/T634.5104-2009),项目基于Java语言。 可以完成规约的内容解析工作和组装工作。可用于实际场景的把发送报文的生成等工作。 【文件目录】 101_104规约解析 ├── LICENSE ├── README.md ├── docs │ ├── 附件1:广东电网配网自动化101规约实施细则(试行).docx │ ├── 附件2:广东电网配网自动化104规约实施细则(试行).docx │ └── 附件3:规约解析细则.xlsx ├── iec.iml ├── iec_analysis │ ├── iec_analysis.iml │ │ ├── ASDU.java │ │ │ │ │ ├── Analysis.java │ │ │ │ │
说明:Java 服务端如果直接返回 Long 整型数据给前端,Javascript 会自动转换为 Number 类型(注:此类型为双精度浮点数,表示原理与取值范围等同于 Java 中的 Double)。 8. 【强制】HTTP 请求通过 body 传递内容时,必须控制长度,超出最大长度后,后端解析会出错。 参考 2022 Java开发手册(黄山版).pdf
8.【推荐】在类中删除未使用的任何字段和方法、内部类;在方法中删除未使用的参数声明与内部变量。 9.【参考】谨慎注释掉代码。在上方详细说明,而不是简单地注释掉。如果无用,则删除。 参考 2022 Java开发手册(黄山版).pdf 白话阿里巴巴Java开发手册(安全规约) - 李艳鹏 - 简书(https://www.jianshu.com/p/9528c4ea1504)
【实例简介】 根据IEC104 2002规约开发,适用于读写西门子IEC104协议的电表和网关 【实例截图】 【核心代码】 IEC_emsClientService └── IEC_emsClientService │ ├── io │ │ ├── CO2.java │ │ ├── Curtain.java │ │ ├── Frequency.java │ │ ├── Humidity.java │ │ ├── Illumination.java │ │ ├── IOProcessor.java │ │ ├── Light.java │ │ ├── Lux.java │ │ ├── ADAM4055Out.java │ │ ├── ADAMAI.java │ │ ├── ADAMDI.java │ │ ├── IModel.java │ │ └── Modbus.java │ ├── Region.java │ ├── RegionManager.java │ ├── SunAltitudeAngleMaker.java
说明:忽略参数校验可能导致: page size过大导致内存溢出 恶意order by导致数据库慢查询 任意重定向 SQL注入 反序列化注入 正则输入源串拒绝服务ReDoS 说明:Java
说明:忽略参数校验可能导致: page size过大导致内存溢出 恶意order by导致数据库慢查询 任意重定向 SQL注入 反序列化注入 正则输入源串拒绝服务ReDoS 说明:Java
【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。 说明:不要以为唯一索引影响了insert速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。
8.【推荐】任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存。 笔记:尤其是集合、批量参数、数据库表都要有最大数量的限制,否则就为OOM埋下隐患。 9. business = new Business(); // business.active(); System.out.println("it's finished"); } 参考 2022 Java 开发手册(黄山版).pdf 白话阿里巴巴Java开发手册(安全规约) - 李艳鹏 - 简书(https://www.jianshu.com/p/9528c4ea1504)
【强制】相同参数类型,相同业务含义,才可以使用Java的可变参数,避免使用Object。 说明:可变参数必须放置在参数列表的最后。 说明:java.net.URLDecoder 中的方法decode(String encodeStr) 这个方法已经过时,应该使用双参数decode(String source, String encode 正例:“test”.equals(object); 反例:object.equals(“test”); 说明:推荐使用java.util.Objects#equals(JDK7引入的工具类) 【强制】 8) 类成员方法只对继承类公开,那么限制为protected。说明:任何类、方法、参数、变量,严控访问范围。过于宽泛的访问范围,不利于模块解耦。
在 JDK8 中,针对统计时间等场景,推荐使用 Instant 类。 4. 【强制】不允许在程序任何地方中使用:1)java.sql.Date 2)java.sql.Time 3)java.sql.Timestamp。 反例:java.util.Date.after(Date) 进行时间比较时,当入参是 java.sql.Timestamp 时,会触发 JDK BUG(JDK9 已修 复),可能导致比较时的意外结果。
System.out.println("银河有多远,你就给我滚多远"); return; } System.out.println("可以先交往一段时间看看"); } 8. 参考 2022 Java开发手册(黄山版).pdf 《编写高质量代码:改善Java程序的151个建议》 白话阿里巴巴Java开发手册(安全规约) - 李艳鹏 - 简书(https://www.jianshu.com
局部类在一个 Java 代码块中声明,不是类的成员)能访问所在块中的局部变量。不过这种能力有个重要的限制,即局部类只能访问声明为 final 的局部变量和参数。 接口只用于定义类型(effective Java 第二版 第15条): 如果要在多个类中使用一组常量,更适合在一个接口中定义这些常量,需要使用这些常量的类实现这个常量接口(constant interface 举个实例,java.io.ObjectStreamConstants 接口。 参考 2022 Java开发手册(黄山版).pdf
说明:推荐对日志进行分类,如将错误日志和业务日志分开存放,便于开发人员查看,也便于通过日志对系统进行及时监控。
unsigned smallint 2 无符号值:0到65535 恐龙化石 数千万年 unsigned int 4 无符号值:0到约42.9亿 太阳 约50亿年 unsigned bigint 8
unsigned smallint 2 无符号值:0到65535 恐龙化石 数千万年 unsigned int 4 无符号值:0到约42.9亿 太阳 约50亿年 unsigned bigint 8
正例: double first = 3.2D; int second = (int)first + 2; 8. 【强制】IDE 的 text file encoding 设置为 UTF-8;IDE 中文件的换行符使用 Unix 格式,不要使用 Windows 格式。 11. 额外加餐 文档注释标签 Java 语言规范还定义了一种特殊的注释,叫文档注释(doc comment),这种注释用于编写代码 API 的文档。 这个字符串参数使用的句法必须符合{@link java.util.regex.Pattern}制定的规则。 因为 package.html 不是 Java 源码文件,所以其中的文档应该是 HTML,而不能是 Java 注释(即不能包含在 /** 和 */ 之间)。
8. 【强制】类型与中括号紧挨相连来定义数组。 正例:定义整形数组 int[] arrayDemo。 反例:在 main 参数中,使用 String args[] 来定义。 9. void commit(); 接口基础常量 String COMPANY = "alibaba"; 反例:接口方法定义 public abstract void commit(); 说明:JDK8 【参考】各层命名规约: A)Service / DAO 层方法命名规约: 1. 获取单个对象的方法用 get 做前缀。 2. B)领域模型命名规约: 1. 数据对象:xxxDO,xxx 即为数据表名。 2. 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。 3. 参考 2022 Java开发手册(黄山版).pdf