十年开发技术 Bug 总结,程序员经验分享
作为一名开发人员,项目出现 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 总结,程序员经验分享相关推荐
- 15年程序员经验分享:40个改变你编程技能的小技巧!
编程如何节省更多的时间,犯更少的错误? 最近,这样一份「心得」火了.这位名叫Kesk Noren的软件工程师在Medium上分享了一篇博文--「40 Tips that will change you ...
- 程序员经验分享:34岁安卓开发大叔感慨,好文推荐
关于面试题 打个比方,如果把找工作理解成考大学,面试就是高考,市面上的"真题"就是模拟试卷.我们会很容易倾向于在面试前寻找对应公司的面试"真题",重点准备,期待 ...
- 程序员经验分享:Android高级工程师系列学习路线介绍,面试必备
前言 曾听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作.这种观点可能是很多Android开发者最开始入行的原因之一. 在工作初期,工作主要是按照业务需求实 ...
- 在华为OD的程序员经验分享
华为 是一家100%由员工持有的民营企业.华为员工级别分为13-22级,从13-18级,每个级别分ABC三小级别,大部分员工在18级内,15级以上薪资涨幅变慢.通常华为工作十年的普通员工大概在16-1 ...
- 十大面试问题解惑,秒杀一切HR、技术面试。程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余。小编收集了10个面试官最爱提的问题
十大面试问题解惑,秒杀一切HR.技术面试.程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余.小编收集了10个面试官最爱提的问题 ...
- 十大面试问题解惑,秒杀一切HR、技术面试。程序员必读!
十大面试问题解惑,秒杀一切HR.技术面试.程序员必读! 最能体现求职者能力的就是面试,能不能拿到Offer,取决于你面试时的表现,只有有准备才能在面试过程中游刃有余.小编收集了10个面试官最爱提的问题 ...
- 那些三十五岁失业的安卓程序员,后来都干什么去了?
前言 本人在互联网行业干过十多年,共事过的程序员没有1000也有800了. 我虽然年纪不大,但最早一批同事老早过了35岁了.身边很多35岁以上的程序员,他们把最好的青春奉献给了公司,当然大多数也获得了 ...
- 编程十年 (15):宿命,程序员
编程十年 (15):宿命,程序员 本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/05/04/programming10years-15.html ...
- 阿里资深技术工程师: 程序员怎样快速成长?
梦想很美好,现实却很残酷 不管是开发.测试.运维,每个技术人员心里多多少少都有一个成为技术大牛的梦.毕竟"梦想总是要有的,万一实现了呢"? 但很多阿里的新人,工作后就会发现,梦想是 ...
最新文章
- 程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug
- ios警告与提示对话框
- JdbcTemplate中的query方法(代码)
- python语言的取余运算符_Python 中用于整数除法取余的运算符是()_学小易找答案...
- 华视读卡器多浏览器插件_翻遍Chrome商店,这9款插件值得安装
- Windows 7 BitLocker 体验
- PHP-FPM,Nginx,FastCGI 之间的关系
- Ubuntu16.04再次装机记
- 我对“硬盘分区”的愚见
- mac数字键盘错乱_电脑键盘输入字母数字错乱怎么回事
- 如何在word中打印对勾和叉
- 5.3.3—二叉查找树—Validate Binary Sear Tree
- 论文阅读:Meta-Learning in Neural Networks: A Survey
- webERP的网络资源
- 5SHY3545L0016 3BHB020720R0002 3BHE019719R0101 GVC736BE101
- 全力以赴地完成书稿中
- 磊科nw336 linux驱动下载,磊科Netcore NW336驱动
- html多媒体标签,元素的使用,标签大全
- 齐鲁工业大学c语言程序设计试题及答案,2016年齐鲁工业大学理学院C语言程序设计考研复试题库...
- 常见报错——Uncaught TypeError: document.getElementsByClassName(...).addEventListener is not a function
热门文章
- 【PC工具】更新微信语音转mp3保存备份方法及工具,微信语音备份方法,silk转mp3工具...
- 【数学计算】判断两条线段是否相交+计算两条线段的交点和夹角
- 数据结构 --- 图的遍历 DFS、BFS
- 远程计算机的凭据无法工作,Windows远程桌面时提示凭证不工作问题的解决办法...
- springboot-grpc
- 在电商平台落地大数据应用的6个场景、2类服务、12个框架
- 【电脑常用办公软件】万彩办公大师教程丨截屏大师工具的应用
- Mac出现共享网络/wifi问题
- 模糊数学 计算机智能,《常用算法之智能计算 (五) 》:模糊计算
- SparkStreaming编程