学到的一些代码处理的细节
2018-03-10 18:18
162 查看
最近写的代码,有同事和mentor review的时候给我提出了一些意见,在这里稍微总结一下。
1. 对于同种类型的出错记录,比如增加metrics打点,也尽量将错误类型区分开。不管是来源不同,比如第三方登录的场景,需要将微信,微博出错的打点分开记录,这样方便之后统计第三方调用的出错量,也更容易定位到某个第三方平台的认证服务是否挂掉。还是结果不同,比如对于同一上游请求的处理,返回的错误代码可能是多样的,这时候就尽量也加上不同的打点,大类可以一样,但是可以在值上做处理达到区分的目的
2. 对于一些性能优化的部分要注意,比如python情况下,写一个函数判断一个uri里面是不是包含特定的地址片段。首先,尽量使用set而不要使用list,看上去复杂度只是从O(1)便到O(n)而且list里面的数量是固定的也不多,但下游服务的小复杂度被上游服务调用的时候可能是走循环的,这时候你的时空间复杂度都会成倍数的增加,因此要在每个细节上注意性能优化。还有比如uri这种问题,实际地址在库里可能存的奇形怪状的,因此判断的时候与其用(‘aaa’,’AAA’)这种形式来判断,不如用一个lower对原uri做处理,再用’aaa’去判断,这样就防止了历史bug可能引入的’aaA’这种地址。
3. 日常业务对于删除字段在数据库里往往不会置NULL,否则一个更新操作你无法判定到底是删除还是压根就没传这个参数,因此varchar往往会写空字符串,int往往会写0,所以业务里一定要注意对空字符串和0这些特殊值的处理
4. 错误处理尽量减少上抛,框架层要有重试机制,轻易不要把exception抛到业务层,业务层也尽量在自己这一层摁死,不要再往上游传了,不然同一exception的处理代码需要在不同模块写很多次,严重的资源浪费
5. 数据库的操作还是尽量带上limit 1,因为数据库往往会做分库分表,查询时候如果查的不是分片键就会去所有表里查询,查到一个以后如果不带limit 1还会接着去查其他分表造成浪费
相关文章推荐
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- MFC里NewWindow2Explorer1的一些常用处理代码
- sql 善后处理的一些代码
- 关于js处理的一些公用代码收集.(代码+demo)
- 图像处理代码的一些思考
- 谈谈代码性能优化中的一些小细节
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- Android杂谈--代码混淆及proguard一些错误处理
- [ARM&Linux]Linux下中断处理的上下文保存与切换的一些细节
- Xcode中的一些代码警告的处理方法
- SLIC超像素分割MATLAB代码执行时的一些细节
- 影响Java代码性能的一些细节
- 关于合理使用SpringMVC统一异常处理机制以改善代码风格的一些思考
- 输入输出流的细节(cin.clear,cin.sync(),cout的一些细节处理)
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- [swift3.0]关于ios 忽略文件 和 提交代码总是提交一些不必要的文件处理
- 写代码的一些小细节,养成好习惯
- 字符串处理strlen函数需要注意的一些小细节问题
- 一些有关图像处理的代码片段(抓图、倒影、圆角)
- 关于登陆页面回车键的一些细节处理