提高项目质量和开发能力

来源:互联网 发布:海尔软件下载 编辑:程序博客网 时间:2024/05/22 07:47

1.写码

发挥代码的自表达能力,不要过分依赖注释。贴切的命名、准确的模块划分;(【注释规范待补充】)

模块化的设计思维,再深入可以了解设计模式,但不要为设计而设计,要恰到好处;

用表达能力更强、语义更清晰的库代替手写工具类,比如guava、joda time,可以多个库互相搭配、各取所长,比如guava和commons配合使用;

持续改进,我们一边少写烂代码,一边重构历史上的烂代码,如何科学的重构?可参考一本书——《重构:改善既有代码的设计》;

写完之后可以再diff一遍,就像交卷前的检查一样。

 

 

2.沟通

不要为了完成功能、跑通程序而开发,应该弄清楚PM的出发点。比如说爱奇艺自动续费藏得很深,这并不是设计错误,而是耍赖让用户多掏钱。

第2手的信息要double check,比如产品的意思经过开发的转述到了我们耳朵里可能就不一样了,信息在传递过程中很可能失真、走样。

 

 

3.学习和提高

多了解整个体系的资源,比如说加个前端监控,平台那边已经有人做过了,我们借鉴即可,资源复用,提高alpha组的生产力,避免重复造轮子。

可多阅读JDK源代码,开拓视野,学习作者的模块划分、命名体系、继承和组合的用法、代码复用的技巧。HashMap、ArrayList、LinkedList、Hashtable都非常值得一看。

知识沉淀,多做笔记,可用上思维导图、线框图等工具,一方面锻炼思维和表达能力(层次化、条理化的思维),另一方面方便以后温习,也可加深印象。

在工作中积累知识,业余时间大家未必有空,工作中遇到问题深入排查,自己收获也多多。

 

 

4.不必要/过早的优化

过早的优化

在非热点上做优化

--------

优化本身是有代价的,会提高项目的复杂性,除非有必要,不要刻意做优化(打蛇打七寸),不然费力不讨好,还起反作用。

项目前期的任务是快速迭代,应该在有限时间内多做几版需求。

(在代码中随意引入算法,并不能体现水平,拿捏场景、发现性能瓶颈、找到合适的算法才是水平的体现)

--------

举个例子:

解析xml配置文件用不着流式解析,如果用了,很可能是过度优化,因为传统解析的语义更清晰

用xml传输2G数据,就一定要用流式解析,否则会宕机。

 

 

5.夸夸其谈的扩展性

跟产品深入沟通,以业务规划为依据,考虑半年的余步即可,不要天马行空的去考虑扩展性。

不是处处都要考虑扩展点,扩展点的预留有规律可循。比如说接入第三方简历导入api,接入智联招聘,可以考虑将来也会接入中华英才。



6.缓存

key命名统一化、规范化,例如:“项目组:项目:模块名:key”

尽可能集中化管理,如果性能不足,再考虑细分。不要缓存逻辑散落在代码各处,维护和扩展都很不方便。



7.关于监控

前端监控,跟踪图片加载、网络请求、js解释报错,记录网页响应时长。  帮我们可以了解用户体验、发现后端bug。

后端异常,常见的异常有哪些,每一天各种异常多少个,有没有哪种异常突然数量飙升?  帮助我们发现线上问题。

 日志规范化,【日志规范待补充】

后端监控埋点【监控规范待补充】



8.测试

 测试环境和生产环境应准备一套完整的账号,这个账号能测试一整套完整流程

有各种小工具/后门来方便测试,比如清除缓存的内网后门、造数据的小工具、加解密的小工具

善用单元测试,有些逻辑靠功能测试难易覆盖全,可用mockito模拟参数做单元测试

用抓包工具来帮助功能测试,windows平台可以用fiddler

可以研究下selenium2的自动化测试和线上巡视



9.数据分析

python日报、sql报表有必要的话,可逐渐做起来,通过这些方法来提高数据透明度

基于elk的实时日志分析也可以做起来,方便大家发布时找问题,或者发布后分析某些数据,也可以让产品自查(流程跟踪)


 

10.高可用

redis主备

mysql的高可用方案,比如mmm

nginx的healthcheck(自动转移)

等后续有需要,再逐步推上去。有余闲可以学习这方面技术,在自己机器上搭环境、做实验。

0 0
原创粉丝点击