项目经验总结
一、完成事项
1. 完成数据统计任务
2. 完成API接口开发
3. 完成运营后台开发
二、达到的效果
1. 在遇到了N个BUG之后,不断优化数据统计接口。 比如为避免接口中用到‘avg has show days’这一项数据时需要复杂的计算,优化过程中将这一项数据计算出来存表。要习惯于写sql前评估执行的数据规模和执行逻辑, 评估一个sql在不同场景(线上, 后台)的适用程度, 一般不推荐在线上用聚合计算, 可以用explain sql看下执行信息。
2. 重要的接口添加了异常处理机制和log,方便以后问题定位。要形成自己的log习惯, 关键业务点加日志, 包含的上下文信息, 业务操作. 既不很繁琐的处处打日志, 又能较快的定位问题。对于定位问题一是逻辑要有一定了解, 另外要尝试分析和猜想哪个环节可能出问题, 由大到小定位。
3. 开发过程中注重代码的可读性,必要之处添加了注释。
三、遇到的问题及解决办法
1. 对项目中用到的一些现成的接口逻辑不熟悉的时候,就去阅读,理清它的实现逻辑,并用多个case去测试接口返回值是否符合我的预期,如果和我想要的结果有出入的话,就看看是否能扩展,扩展了之后会不会影响原有功能等。
2. 测试过程中遇到一个无法解决的问题。例如当一个已登录用户访问API接口时报错用户未登录。这个问题着实令人脑阔痛,经过反复阅读我的接口代码没发现什么问题后,我尝试用不同的方式获取用户信息,我首先从本地缓存中读取用户的登录信息(应该是这种方式是正确的),访问API接口失败,再尝试直接通过GET 或者POST方法获取用户信息,仍失败。束手无策只好请教有经验的同事,发现是请求到前端的服务器之后改变了用户信息中,导致API接口获取的用户信息有误无法验证其身份。
四、我的不足
1. 对需求的理解不透彻,没有考虑到很多细节的问题。比如当天或者当月没有数据或者数据还未生成的时候,API接口应该返回什么样的状态。需要排序的多个用户的某一项数据相同时,第二参考标准的选择等等。
2. 遇到有疑问的需求没有及时和PM沟通确认,导致测试过程中调整多次代码逻辑。
3. 对自己的代码不自信就是对自己的不自信!
解决办法:写单元测试去保证. 我们写代码尽可能把有副作用的代码(就是和外部组件, 比如db, cache之类的交互的) 和 纯逻辑计算的代码分开。计算这块的代码完全可以用单测保证正确性, 确保它没问题后, 在其它地方可以可靠的调用它, 出了问题也能第一时间排除掉它。
4. 定位问题以及解决问题的能力有待提高。
五、我的收获
1. 要充分理解需求,并制定可行的解决方案,如果不知道选择哪种实现方式好,可以拿出多种解决方案去请教同事, 不要闭门造车。
2. 设计好开发流程,严格按照时间要求去实现,如果实现某个部分有delay,记下delay 的原因,尽量避免在之后的开发过程中出现同样的事。
3. 注重接口设计的细节部分,保证接口的质量,不要一点点改动就导致接口不可用。
4. 相信自己正确的做法,不要时时刻刻怀疑自己,因为他人不一定了解你的需求,要进行有效的沟通,多问问并不丢人。