摘要
本文主要关于写码时需要遵守的约定。这些约定能够提高团队协作,并降低维护成本。
背景
代码是不断成长的,在成长的过程中,有逐渐变得混乱的趋势。所以需要通过遵守编码公约尽量降低混乱的增加速度。
编码规约的最主要目的是为了方便协作(共同开发,后期维护)
好的编码规约的作用:
-
减少代码维护成本;
-
改善可读性
-
提高团队开发的合作效率
-
锻炼出更严谨的思维
代码模式与命名风格
命令体现代码元素特征
-
抽象类命名使用 Abstract 或 Base 开头
-
异常类命名使用 Exception 结尾
-
测试类命名以它要测试的类名开始,以Test结尾
-
类型与中括号紧挨相连定义数组
-
枚举后面带上 Enum 后缀。枚举成员名称需要全大写,单词间用下划线隔开
-
命名要准确达意,不要人为增加理解难度。
常量设计与定义
不允许未经定义的常量出现在代码中。常量一定要实现定义。
统一常量一定要统一管理,统一维护,统一使用。
在使用常量时容易出现的错误:复制常量时出现错误,从而导致错误。如果将常量统一定义之后,直接调用的过程中不会出现错误。
前后端设计规约
前后端分离的纠结点:
-
接口名称和风格
-
如果空集合,返回 null 还是返回空集合
-
json 组装格式
-
后台异常的失败提示
-
错误信息与用户提示透出
浮点数传递
问题描述
后端JAVA向前端JS传递Long类型数据时,前端显示的值和后端传递的值不同。
错误原因
背景描述
计算机是二进制。现实中的十进制数字要转换成二进制表示。因此十进制中有限的小数,变成二进制后会变成无限小数。由于不同数据类型的有效数字位数有差别。所以在值传递时,有效数字会产生截断。
错误原因
JS 数字类型采用 Double 表示,Double 只有54个有效位,Long有64个有效位。
Double 类型表示的范围大于 Long ,但是有效数字的位数小于 Long。所以后端向前端传递 Long 类型时,会产生截断。截断产生误差。
解决方式
JAVA 与 JS 对数字类型变量的处理方式不同。如果数字太大或有精度要求,最好使用 String 类型。