作为一名开发人员,项目出现 bug 是避免不了的。无论你是一名初入职场的小白,还是拥有经验丰富的大佬,只要经常写代码,梳理业务逻辑,很难免不出bug。正所谓常在冰上走,难免不湿鞋。记得以前经常听人说,如果你没有把系统搞宕机过,就不是一名合格的CTO,成为一名出色的开发人员,经验都是一个一个积累起来的。那么怎么能避免出现bug呢,写出没有问题的代码呢,我来分享一下我的经验。

一、需求

开始开发之前一定要先把需求搞清楚,不清楚的地方要和产品人员沟通,对产品设计有疑问的地方也要提出来,不能给问题留下生长的火种。

以前团队比较小,做项目都是老板提出需求,我们技术自己来确定方案。做技术久了,思维有时就会单一,不能考虑到不同用户需求和市场的思维方式,即使你觉得给出的是最优最合理的方案,当产品推出的时候会收到各方面的质疑,让你无法回答用户。比如一个下单按钮的设计,技术思维就会想如果你是合格用户,有钱,就会想尽一切办法让你下单成功,实现客户的愿望。但产品就考虑全面一些,即使你合格,有钱,还要考虑使用场景,是不是有效时间内,是不是第一次等多种因素。这样规范规定才能在有很多用户的情况下稳定的运行,每一个不明确的因素都有可能让用户产生疑惑,而给我们带来很多不必要的问题。不能考虑用户和市场的需求,那么技术也只能意淫了。

二、规划

对清楚需求之后,需要对开发的流程有一个规划,涉及哪些模块、用到那些知识点、有那些难点、对其他项目有没有影响、有没有特殊操作过的地方等需要对大致流程做到心中有数,最好把流程图画出来,能够提醒自己不至于忘记,对日后的总结也是一种查阅的纪录。

三、开发中常出现的bug总结

开发过程中难免出现问题,这时我们需要对bug进行归类总结,在下次开发中提醒自己避免出现同样的错误,我遇到过的错误以下这些

1. 业务不清楚,修改没有改全面

2. 做业务报表,分很多种,需要明确场景用到的哪一个数据源

3. 修改点要把涉及到的地方都修改

4. 特殊性,有些操作是特殊处理过的,在特殊处理的时候要把备注添加好,通知给所有人

5. 代码规范:这个在刚进入职场的时候不会注意,不规范的开发随着时间的推移就会发现踩了很多坑,比如:

1) 唯一索引,在代码里判断了不能出现重复,数据库里没有设置唯一索引,那就有可能会出现重复的数据

2) 异常情况的处理,有的时候只考虑的正常情况,没有添加处理非正常情况的处理,这样当出现非正常的操作时就会出现一个错误的页面

3) 变量类型的定义,有的情况变量类型的不同会出现不同的值,经常出现的是字符串和数字,一个实例,$a = array(‘ab-c’, ’12-a’, ‘ab-12’); $b=’12-a’ 判断if (in_array($b, $a)) 会返回false

4) 方法函数的参数考虑是否设定默认值public function a($a, $b=””)

5) 导出excel文档数据太多可能导致内存超出

6. If 判断要有退出逻辑,如 if($a > 10){} 那么当 $a 大于 10 就进入无限循环了

7. 更新数据时考虑先后顺序,有时候在一个方法里 上面用到了这个信息,下面才处理更新的操作,这就导致了信息的错误。还有删除操作,前面有一条假数据,先删除后更新,肯定找不到数据了

8. 方法的调用,在一个方法里面添加了不同域名都调用这个方法,每个域名下这个方法实现逻辑都一样,互相调用就出现了无限循环

9. 静态化的情况,有一个参数变动都需要重新生成页面,多个参数需要多个静态页面

10. 数据获取结果限制最大数,不然特殊情况会查询所有数据,输出时会产生很多流量

11. 数据更新、删除时不要忘记where 条件,以防万一加上limit 限制,避免错误时更新全部数据

12. 改bug的时候可能比当初一次完成所需要的时间还长,深思潜行

13. post 传输长度一般为2M,get传输为2k

14. 需要考虑应用场景

15. 时间问题,上线时间是否控制,是否自动下线

16. 随时间推移数据增多是否有影响

17. 运行环境的差异:测试环境切换生产环境

18. 涉及哪些模块:有哪些项目需要修改

四、测试

开发完都会测试一边,有时候耍懒或者感觉是小改动就不测试,这样就不能保证绝对正确,有时候很小的改动也会出bug,测试的习惯要慢慢培养起来。

遇到逻辑复杂的情况,要根据每一个场景、不同的参数、不同的测试环境测试,自己测试都需要一两天时间,想想测试也是一件辛苦活呀。

五、上线跟踪

项目上线之后要主动跟进,根据线上数据看看是否符合要求,这样才能及时发现问题。

当一个项目刚刚启动的时候,可能没有那么多问题。当有一定数据量的时候,业务逻辑也变复杂了,这时候改动一个功能点,既要考虑前面的兼容性,又要考虑以后的性能问题,需要做的任务越来越多,业务也越来越复杂,bug就会出现,出现问题要多思考原因,及时改正,要减少bug出现,这样才能在职场中赢得大家的信任。好的习惯需要慢慢培养,大道理一大堆,只有遇到的时候才能深有体会,现在你看到的问题,可能就是以后你遇到的问题。一点总结分享,感谢阅读,欢迎交流。

来和大家一起成长吧!

十年开发技术 Bug 总结,程序员经验分享相关推荐

  1. 15年程序员经验分享:40个改变你编程技能的小技巧!

    编程如何节省更多的时间,犯更少的错误? 最近,这样一份「心得」火了.这位名叫Kesk Noren的软件工程师在Medium上分享了一篇博文--「40 Tips that will change you ...

  2. 程序员经验分享:34岁安卓开发大叔感慨,好文推荐

    关于面试题 打个比方,如果把找工作理解成考大学,面试就是高考,市面上的"真题"就是模拟试卷.我们会很容易倾向于在面试前寻找对应公司的面试"真题",重点准备,期待 ...

  3. 程序员经验分享:Android高级工程师系列学习路线介绍,面试必备

    前言 曾听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作.这种观点可能是很多Android开发者最开始入行的原因之一. 在工作初期,工作主要是按照业务需求实 ...

  4. 在华为OD的程序员经验分享

    华为 是一家100%由员工持有的民营企业.华为员工级别分为13-22级,从13-18级,每个级别分ABC三小级别,大部分员工在18级内,15级以上薪资涨幅变慢.通常华为工作十年的普通员工大概在16-1 ...

  5. 十大面试问题解惑,秒杀一切HR、技术面试。程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余。小编收集了10个面试官最爱提的问题

    十大面试问题解惑,秒杀一切HR.技术面试.程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余.小编收集了10个面试官最爱提的问题 ...

  6. 十大面试问题解惑,秒杀一切HR、技术面试。程序员必读!

    十大面试问题解惑,秒杀一切HR.技术面试.程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余.小编收集了10个面试官最爱提的问题 ...

  7. 那些三十五岁失业的安卓程序员,后来都干什么去了?

    前言 本人在互联网行业干过十多年,共事过的程序员没有1000也有800了. 我虽然年纪不大,但最早一批同事老早过了35岁了.身边很多35岁以上的程序员,他们把最好的青春奉献给了公司,当然大多数也获得了 ...

  8. 编程十年 (15):宿命,程序员

    编程十年 (15):宿命,程序员 本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html ...

  9. 阿里资深技术工程师: 程序员怎样快速成长?

    梦想很美好,现实却很残酷 不管是开发.测试.运维,每个技术人员心里多多少少都有一个成为技术大牛的梦.毕竟"梦想总是要有的,万一实现了呢"? 但很多阿里的新人,工作后就会发现,梦想是 ...

最新文章

  1. 程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
  2. ios警告与提示对话框
  3. JdbcTemplate中的query方法(代码)
  4. python语言的取余运算符_Python 中用于整数除法取余的运算符是()_学小易找答案...
  5. 华视读卡器多浏览器插件_翻遍Chrome商店,这9款插件值得安装
  6. Windows 7 BitLocker 体验
  7. PHP-FPM,Nginx,FastCGI 之间的关系
  8. Ubuntu16.04再次装机记
  9. 我对“硬盘分区”的愚见
  10. mac数字键盘错乱_电脑键盘输入字母数字错乱怎么回事
  11. 如何在word中打印对勾和叉
  12. 5.3.3—二叉查找树—Validate Binary Sear Tree
  13. 论文阅读:Meta-Learning in Neural Networks: A Survey
  14. webERP的网络资源
  15. 5SHY3545L0016 3BHB020720R0002 3BHE019719R0101 GVC736BE101
  16. 全力以赴地完成书稿中
  17. 磊科nw336 linux驱动下载,磊科Netcore NW336驱动
  18. html多媒体标签,元素的使用,标签大全
  19. 齐鲁工业大学c语言程序设计试题及答案,2016年齐鲁工业大学理学院C语言程序设计考研复试题库...
  20. 常见报错——Uncaught TypeError: document.getElementsByClassName(...).addEventListener is not a function

热门文章

  1. 【PC工具】更新微信语音转mp3保存备份方法及工具,微信语音备份方法,silk转mp3工具...
  2. 【数学计算】判断两条线段是否相交+计算两条线段的交点和夹角
  3. 数据结构 --- 图的遍历 DFS、BFS
  4. 远程计算机的凭据无法工作,Windows远程桌面时提示凭证不工作问题的解决办法...
  5. springboot-grpc
  6. 在电商平台落地大数据应用的6个场景、2类服务、12个框架
  7. 【电脑常用办公软件】万彩办公大师教程丨截屏大师工具的应用
  8. Mac出现共享网络/wifi问题
  9. 模糊数学 计算机智能,《常用算法之智能计算 (五) 》:模糊计算
  10. SparkStreaming编程