提高项目质量和开发能力
来源:互联网 发布:海尔软件下载 编辑:程序博客网 时间: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(自动转移)
等后续有需要,再逐步推上去。有余闲可以学习这方面技术,在自己机器上搭环境、做实验。
- 提高项目质量和开发能力
- 项目开发纪要,为了提高开发效率和质量
- 如何提高项目质量
- 体育运动,提高开发质量
- 通过JProbe提高项目开发质量 之内存泄漏
- eclipse基础设置 提高开发速度和质量
- 如何提高Java开发能力
- 如何提高表达能力和逻辑思维能力
- 10个经典的Android开源应用项目,提高你的开发能力
- 10个经典的Android开源应用项目,提高你的开发能力
- 提高你的J2EE项目的质量
- 项目团队如何提高软件质量
- Trufun Kant产品——提高个人开发和团队开发的能力
- 项目开发中,质量和速度哪个更重要?
- 项目开发中,质量和速度哪个更重要?
- 提高自身的开发java的能力!
- 90后码农如何提高iOS开发能力
- 致力于极致提高开发效率和代码质量之快捷键和TDD
- session
- 【JZOJ 4820】 最大化
- Android开发笔记—ViewPager的基础使用
- Python读写csv文件
- Java并发编程之八:synchronized的另个一重要作用:内存可见性
- 提高项目质量和开发能力
- 1.1 人生中第一块板子——PCB绘制之提前准备
- 分支判断 90分以上为优秀 60以上为合格 60以下为不合格
- 使用ALTER USER命令修改用户的密码、密码过期,锁定,解锁
- [CF 724E]Goods transportation
- xml--include用法--xml文件模块化
- servlet笔记
- Angular之$location
- presentViewController显示方式的窗口,没有导航栏的解决方法