基本原则
制定完善和遵守开发过程的基本原则,可以减少软件的安全风险,提高代码可读性,可维护性,可扩展性,可复用性,可测试性等。可以帮助开发人员提高开发效率,降低开发成本。以下为个人开发过程总结的一些原则。
最小化原则
- 原则:最小化原则-强烈推荐
- 说明:为系统系统的参数更简洁,更方便维护,制定以下推荐条例:
- 接口定义,参数需要尽可能的简洁。所有的参数都是必需参数。能后端获取的参数,不要让前端传。
- 接口参数定义,尽可能封装对象传输,不要包含不必要的参数。
- 自定义 sql 查询,结果集将只包含必要的数据。
- 接口参数返回,所有参数都需要是必要且不多余的。
最快收敛原则
- 原则:最快收敛原则-强烈推荐
- 说明:为提高系统的性能,偷换数学的概念,结合编码学,创建了最快收敛原因:
- 前端(接口定义)聚合数据进行传输。如,批量删除,只应传一组id,调一次接口
- 需要调用其他服务模块,如果其他服务批量操作,应预先准备数据,进行一次调用
- 对数据库进行多次类似的操作,如果有批量操作接口,应预先准备数据,只对数据库进行一次操作
- sql 查询进行数据关联时,应找对 join 条件,使得进行关联的数据以最快的速度减少
- 数据返回时,尽可能聚合参数,尽可能减少数据的传输次数
- 如果可以做到以上的快速收敛,可以不考虑 java 代码对数据的处理量。原因是:以上的调用过程都要经过 http 请求,或者磁盘的读写。而 java 的运行,会全部在内存中运行。效率不是同一个数量级
互不信任原则
- 原则:互不信任原则-强烈推荐
- 说明:在程序运行上下游的整个链路中,每个点都是不能保证绝对可靠的,任何一个点都可能随时发生故障或者不可预知的行为,包括机器网络、服务本身、依赖环境、输入和请求等,因此要处处设防。
- 参数严格校验
- 权限严格校验
- 数据返回严格筛选
- 权限最小化
- 白名单模式
- 健全的敏感操作日志体系
- 其他任何可能的倏忽,都提前防备
金钱的计算原则
- 原则:单位精确到分。
BigDecimal.ROUND_HALF_UP
原则-强制执行
前端:
- 计算后的值,必需使用
toFixed(n)
函数进行处理。 - 也可以使用:
Math.round(parseFloat(price*100 * quantity))/100
后端:
- 强制使用 BigDecimal,后端:
bigDecimal.setScale(2,BigDecimal.ROUND_HALF_UP)