孤尽班第六次课
可能颠覆你认知的一节课
编码规约
编码规约的缘起
1. 熵增定律: 只要我们没有外力干预代码规范
2. 我们的代码总有一天无可救药
3.代码规范不一致=》 代码生产力损耗
4.帕金森琐碎定理 : 在一些不是核心的小事上浪费时间
5. 编码规约存在的意义
(1) 减少代码的维护成本
(2)改善可读性
(3)提高团队开发的合作效率
(4)锻炼出更加严谨的思维
(5) 身心愉快
代码格式与命名
1. 命名风格与代码格式-- 两个要求
命名体现代码元素特征
(1)抽象类型名 使用 Abstact 或 Base 开发
(2) 异常类命名使用Exception
(3) 测试类命名以它要测试的类名开始,以Test 结尾
(4) 类型与中括号紧挨相连来定义数组
(5) 枚举类名带上Enum 后缀,枚举成员名称需要全大写,单词间用下画线隔开
命名最好望文知义
某些不规范的编写 导致理解成本增加,比如condition 缩写成condi
主流的编程语言基本上以英语为基础,此处望文的文 ,指的是英文。
某业务代码中,曾经出现过DaZePromotion
如何定义常量
常量定义设计与规约
1. 跨应用共享常量,放置在SDK中
2. 应用内共享常量:放置在一方库中
3. 子工程内部共享常量: 即在当前子工程的 constant 目录下
4. 包内共享常量: 即在当前包下单独的constant 目录下
5. 类内共享常量: 直接在 类内部 private static final 定义
常量定义设计与规约
常量命名应该全部大写,单词用下划线隔开,力求语义表达完整清楚,不要嫌 名字长
1. 最大库存数量命名:MAX_STOCK_COUNT
2. 缓存失效时间命名: CACHE_EXPIRED_TIME
3. 用户注册错误 : USER_REGISTER_ERROR
注释的误区
注释的作用
1. 提高代码可读性
2. 是程序条理清晰
3. 方便后期代码维护
4. 方便程序员间的交流沟通
5. 生成帮助文档
6. 警示作用,防止踩坑
前后端设计与规约
前后端联合开发的纠结点
1. 接口名称和风格
2. 如果空集合,返回NULL 还是空集合
3. JSON 组装格式
4. 后台异常的失败提示
5. 错误信息与用户提示透出
二. 为什么会有科学计数法
表示极大数
表示极小数
浮点数的表示范围
Float: 比特数为32 有效数字为 7 位(十进制),数值范围为 -3.4E + 38 和 3.4E + 38
Double : 比特数为64, 有效数组为16 (十进制), 数值范围为-1.7E-308 和 1.7E + 308
### 回到JS
JS 没有整形,只有Double 浮点数
Long 类型有64 位 传递给前端必须转换成科学技数法
而Double 只有 16 位有效数字 超过16 位有效数字,就会被截段
最大能够精确表示的整形值:2的53 次方
前后端设计与规约
【强制】 对于需要使用大整数的场景,服务端一律使用String 字符串类型返回,禁止使用Long 类型
说明:Java 服务端如果直接返回Long 整型数据给前端 ,JS 会自动转换位Number 类型 , 此类型位 双浮点数,表示原理与取值单位等同于 Java 的 Double ). Long 类型能表示的最大值是 2 的63 次方 -1 , 在取值范围之内, 超过 2 的 53 次方 的 数字据转换为 JS 的Number 时 ,有些数值就会精度损失,
口占说明。在Long 取值 范围内 ,任何2 的指数次数都哦是绝对不会存在精度损失的,所以说 精度损失是一个概率问题, 若浮点数尾数与指数位空间不限,则可以精确表示人恶化整数, 但很不幸,双精度不断书的尾数只有52 位 。
【反例】: 通常在订单号或交易大于等于16 位 ,大概率出现前后端 单据不一致的情况 ,比图 orderId : 362909601374617692 前端拿到的值确是 362909601374617660
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77137.html