当前位置: 首页 > news >正文

团队代码中Bug太多怎么办?怎样稳步提高团队的代码质量

最近负责的Android APP项目,由于团队成员变动、界面改版导致代码大幅修改等原因,产品发布后屡屡出现BUG导致的程序崩溃。

经过对异常统计和代码走读,BUG主要集中在空指针引起的NullPointerException和RuntimeException异常,这也是Android项目中最容易导致崩溃的根源。

导致这些BUG的原因主要是:

1、对项目架构不熟悉,缺乏整体思考;

2、写代码逻辑不周密,思考不全面;

3、对代码的BUG和程序的稳定性重视不足;

4、项目较为复杂,多界面跳转、数据结构复杂等。

仅仅在每次发版前对代码review的方式已经保障不了产品的稳定性。

代码出BUG是人为的因素,但不应该仅在人身上找原因。好的架构设计以及制度和工具保障,才能根本降低代码BUG。并且能在团队成员变动的情况下,做到稳步提高团队的代码质量。

在实践中总结出以下几点:

1、加强对BUG的重视程度,不能抱有侥幸心理;

2、利用APP的移动统计工具(目前我们使用的是百度移动统计)对运行期间出现的BUG进行分析;

注:百度移动统计中的错误报告可定位到发生BUG的代码行,对BUG处理非常方便,在产品测试期间也可充分利用;

3、产品发布前对代码走读,尤其是对没有经验和没形成良好编程习惯的新手编写的代码;

4、把代码走读中出现的错误不仅要修改,更重要的是记入checklist系统,最终形成积累;

注:这点非常重要,根据以往经验,如果仅仅是修改了事,重复问题还会出现,也无法在团队成员中进行信息的分享。

目前还没有相关的工具,前期checklist可以用word或者excel,通过SVN共享。今天用1个小时写了个简单的checklist,更方便团队成员查看。

形成的checklist可以在代码走读时对照list检查,可以避免犯重复性错误,随着checklist的积累,团队的代码质量也会稳步提高。

5、制定代码规约并严格执行,违反的问题记入checklist;

总之可以归纳为分析+积累+分享,没有checklist的积累,仅仅依靠团队成员的经验积累,是非常不靠谱的。

 


我用的checklist也非常简单,一个添加页面、一个列表页面:

添加页:

列表页:

转载于:https://www.cnblogs.com/ym123/p/4206953.html

相关文章:

  • jquery控制按钮的禁用与启用
  • 输出100000以内的质数 (优化2)
  • 莫名其妙ng-change被触发两次
  • javascript2
  • jhipster 安装
  • 2015真正运维自动化技术沙龙活动
  • python 面向对象
  • Xcode中iPhone iPad模拟器调整大小的方法
  • 简单工厂模式
  • JVM
  • cpu主频信息
  • 详细解读Android中的搜索框(三)—— SearchView
  • 长城:场面很热闹情节很垃圾
  • API开发的版本控制技巧
  • Android 强烈推荐:程序员接私活那点事
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [数据结构]链表的实现在PHP中
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • CSS实用技巧
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6核心特性
  • JavaScript学习总结——原型
  • leetcode讲解--894. All Possible Full Binary Trees
  • PaddlePaddle-GitHub的正确打开姿势
  • Python连接Oracle
  • Python学习之路13-记分
  • session共享问题解决方案
  • 浏览器缓存机制分析
  • 三分钟教你同步 Visual Studio Code 设置
  • 通信类
  • 一天一个设计模式之JS实现——适配器模式
  • 在Unity中实现一个简单的消息管理器
  • 大数据全解:定义、价值及挑战
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​香农与信息论三大定律
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (floyd+补集) poj 3275
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (六)激光线扫描-三维重建
  • (区间dp) (经典例题) 石子合并
  • (一)Dubbo快速入门、介绍、使用
  • (转)jQuery 基础
  • (转)linux下的时间函数使用
  • (转)ObjectiveC 深浅拷贝学习
  • (转)可以带来幸福的一本书
  • *上位机的定义