编码规约
Java编码规范
绣花针
心有猛虎,细嗅蔷薇
展开
-
编码规约之命名风格(阿里规约整理,后续不再赘述)
目录一、强制1.不能以下划线或美元符号开始或结束2.严禁使用拼音与英文混合与中文3.类名使用UpperCamelCase驼峰风格4.方法名、参数名、成员变量、局部变量使用 lowerCamelCase 驼峰风格5.常量命名全部大写且单词间用下划线隔开6.抽象类命名、异常类命名和测试类名规则7.数组以类型与中括号紧挨相连8.POJO 类中布尔类型的变量不要加 ...原创 2019-03-20 10:04:19 · 5717 阅读 · 2 评论 -
编码规约之其他
目录一、强制1.使用正则表达式时注意问题2.velocity调用 POJO 类的属性注意问题3.velocity后台输送给页面的变量必须加$!{var}---中间的感叹号4.Math.random()注意点5.获取当前毫秒数二、推荐1.不要在视图模板中加入任何复杂的逻辑2.任何数据结构的构造或初始化,都应指定大小3.及时清理不再使用的代码段或配置信息一、...原创 2019-03-23 16:17:34 · 675 阅读 · 0 评论 -
编码规约之代码格式
目录一、强制1.大括号的使用约定2.左小括号和字符之间不出现空格(右小括号同)3.if/for/while/switch/do 等保留字与括号之间都必须加空格4.任何二目、三目运算符的左右两边都需要加一个空格5.采用 4 个空格缩进,禁止使用 tab 字符6.注释的双斜线与注释内容之间有且仅有一个空格7.单行字符数限制不超过 120 个超出需要换行8.方法参...原创 2019-03-23 15:29:30 · 1341 阅读 · 0 评论 -
编码规约之注释规约
目录一、强制1.类、类属性、类方法的注释必须使用 Javadoc 规范2.所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释3.所有的类都必须添加创建者和创建日期4.方法内部单行注释使用//注释5.所有的枚举类型字段必须要有注释二、推荐1.注释中英文问题2.代码修改的同时要修改相应注释三、参考1.谨慎注释掉代码2.对于注释的要求3....原创 2019-03-23 14:43:31 · 445 阅读 · 0 评论 -
编码规约之控制语句
目录一、强制1.switch语句规约2.if/else/for/while/do语句中必须使用大括号3.在高并发场景中避免使用”等于”判断作为中断或退出的条件二、推荐1.表达异常的分支时少用 if-else 方式(非得使用请勿超过 3 层)2.除常用方法(如 getXxx/isXxx)等外不要在条件判断中执行其它复杂的语句3.循环体中的语句要考量性能以下操作尽量...原创 2019-03-23 14:07:42 · 1499 阅读 · 0 评论 -
编码规约之并发处理
目录一、强制1.获取单例对象与其方法需要保证线程安全2.创建线程或线程池时请指定有意义的线程名称3.线程资源必须通过线程池提供4.线程池通过 ThreadPoolExecutor 的方式创建5.SimpleDateFormat线程不安全使用规约6.高并发时同步调用应该去考量锁的性能损耗7.加锁顺序问题8.并发修改同一记录时需要加锁9.多线程并行处理定时任务T...原创 2019-03-23 11:26:30 · 361 阅读 · 0 评论 -
编码规约之集合处理
目录一、强制1.hashCode 和 equals 的处理2.ArrayList的subList结果不可强转成ArrayList3.subList 场景中,高度注意对原集合元素的增加或删除4.集合转数组的方法,必须使用集合的 toArray(T[] array)5.工具类 Arrays.asList()把数组转换成集合注意点6.泛型通配符来接收返回的数据7.不要在...原创 2019-03-23 10:51:04 · 566 阅读 · 1 评论 -
编码规约之应用分层
目录一、推荐1.分层规约二、参考1.分层异常处理规约2.分层领域模型规约一、推荐1.分层规约下图中默认上层依赖于下层,箭头关系表示可直接依赖。如:开放接口层可以依赖于 Web 层,也可以直接依赖于 Service 层,依此类推:开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安全控制、流量控制...原创 2019-03-25 14:15:34 · 300 阅读 · 0 评论 -
编码规约之OOP规约
目录一、强制1.避免通过类对象访问静态方法或变量2.所有的覆写方法必须加@Override 注解3.相同参数类型与相同业务含义才可以使用 Java 的可变参数4.正在调用或者依赖的接口不允许修改方法签名5.不能使用过时的类或方法6.使用常量或确定有值的对象来调用 equals7.所有的相同类型的包装类对象之间值比较使用equals8.基本数据类型与包装数据类型...原创 2019-03-21 22:17:07 · 1027 阅读 · 0 评论 -
编码规约之ORM映射
目录一、强制1.在表查询中一律不要使用 * 作为查询的字段列表2.POJO 类的布尔属性不能加 is而数据库字段必须加 is_3.不要用 resultClass 当返回参数4.sql.xml 配置参数使用#{}或#param#5.iBATIS自带的queryForList不要使用6.不允许直接拿 HashMap 与 Hashtable 作为查询结果集的输出7.更新数...原创 2019-03-25 14:07:18 · 734 阅读 · 0 评论 -
编码规约之SQL语句
目录一、强制1.count(*)作为标准统计行数的语法2.count(distinct col) 计算该列除 NULL 之外的不重复行数3.当某一列的值全是 NULL 时count(col)的返回结果为 04.使用 ISNULL()来判断是否为 NULL 值5.在代码中写分页查询逻辑时若 count 为 0 应直接返回6.不得使用外键与级联7.禁止使用存储过程...原创 2019-03-25 13:50:43 · 1009 阅读 · 0 评论 -
编码规约之索引规约
目录一、强制1.业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引2.超过三个表禁止 join3.在 varchar 字段上建立索引时注意项4.页面搜索严禁左模糊或者全模糊二、推荐1.如果有 order by 的场景注意索引的有序性2.利用覆盖索引来进行查询操作,避免回表3.利用延迟关联或者子查询优化超多分页场景4.SQL 性能优化的目标...原创 2019-03-25 13:35:52 · 491 阅读 · 0 评论 -
编码规约之建表规约
目录一、强制1.表达是与否概念的字段必须使用 is_xxx 的方式命名2.表名、字段名必须使用小写字母或数字3.表名不使用复数名词4.禁用保留字5.索引命名6.小数类型为 decimal,禁止使用 float 和 double7.如果存储的字符串长度几乎相等,使用 char 定长字符串类型8.varchar使用9.表必备三字段:id, gmt_create...原创 2019-03-25 13:04:46 · 977 阅读 · 0 评论 -
编码规约之安全规约
目录一、强制1.隶属于用户个人的页面或者功能必须进行权限控制校验2.用户敏感数据禁止直接展示3.用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定4.用户请求传入的任何参数必须做有效性验证5.禁止向 HTML 页面输出未经安全过滤或未正确转义的用户数据6.表单、AJAX 提交必须执行 CSRF 安全验证7.在使用平台资源,譬如短信、邮件、电话...原创 2019-03-25 12:03:06 · 1152 阅读 · 0 评论 -
编码规约之日志处理
目录一、强制1.应用中不可直接使用日志系统(Log4j、Logback)中的 API2.日志文件至少保存15 天3.应用中的扩展日志(如打点、临时监控、访问日志等)命名方式4.对 trace/debug/info 级别的日志输出注意项5.避免重复打印日志,浪费磁盘空间,务必在 log4j.xml 中设置 additivity=false6.异常信息应该包括两类信息:案发...原创 2019-03-25 09:09:24 · 558 阅读 · 0 评论 -
编码规约之常量定义
目录一、强制1.不允许使用魔法值直接出现在代码中2.Long或long赋值时使用大写L二、推荐1.不要使用一个常量类维护所有常量2.分层次放置变量3.变量值仅在一个固定范围内变化用 enum 类型来定义一、强制1.不允许使用魔法值直接出现在代码中不允许任何魔法值(即未经预先定义的常量)直接出现在代码中,详解请见另一篇文章编码规约之使用Enum枚举类替代魔...原创 2019-03-20 19:07:26 · 693 阅读 · 0 评论 -
编码规约之使用Enum枚举类替代魔法值
目录一、魔法值概念1.警示案例12.警示案例2二、重构方案1.静态常量(不要使用)2.枚举类三、总结一、魔法值概念常量在代码中具有穿透性,使用甚广。如果没有一个恰当的命名,就会给代码阅读带来沉重的负担,甚至影响对主干逻辑的理解。首当其冲的问题就是到处使用魔法值。魔法值即"共识层面"上的常量,直接以具体的数值或者字符出现在代码中。这些不知所云的魔法值极大地影响...原创 2019-03-20 15:28:34 · 3735 阅读 · 1 评论 -
编码规约之异常处理
目录一、强制1.通过预检查方式规避的 RuntimeException 异常不应该通过 catch 的方式来处理2.异常不要用来做流程控制或条件控制3.catch 时请分清稳定代码和非稳定代码4.捕获异常处理问题5.try块存在事务代码注意回滚问题6.finally 块必须对资源对象、流对象进行关闭,有异常也要做 try-catch7.不要在 finally 块中...原创 2019-03-23 21:30:19 · 1065 阅读 · 0 评论