最近修bug的一点感悟
写在前面话
项目从13年1月份,现场开发,4月中旬,项目开发接近尾声,三个开发,留两个在现场,我被调回公司,5月份现场一同事离职,只有一个同事在开发,结果PM想让这一个同事承担余下的开发和bug工作,结果意外的这一同事离职,离职前一周,我又来现场,接手他的工作,还好bug比较简单,木有神马复杂的功能,从这修一周的bug来看,感想挺多的,随笔记录几点。
共用VS各自独立(复杂逻辑VS简单copy)
在4月调回之前,有一同事接手我的工作,后来这部功能需求有较大的变更,这一同事在回到公司经常给我说的一句话就是:“你写的那块代码,我全部重写了”,我听了之后第一感觉是需求肿么可能变化那么大,重写就重写吧,当然也有一点不爽,难道我写的代码就那么差劲,要重新写吗?
我的方式(共用)
那部分的场景,功能主页index.jsp,单个业务处理页面deal.html,批量处理界面batchDeal.html,我负责开发5个功能,每个功能都是这样的界面结构,单个业务处理和批量处理的界面有重复部分,我将重用的界面抽取出来,生成三个独立的界面,这么做的唯一目的就是提高界面的重用性,但是这样子也导致界面获取的逻辑变的复杂,需要认真的去看才能看明白,当时编写这块代码的时候,有方法及代码块这两个级别的注释,木有写这块的整体思路,这点是自己做的不够好,但是仔细看是能看懂的,需要时间。
同事的方式(copy、paste)
修改之后的,各个界面处独立,单个业务处理页面是单个的,批量处理的界面是批量处理的,所有关于这个大模块的功能都是这样子开发(共计16个功能,两个人完成),界面、js的代码功能逻辑相似,但各个界面都是自己,相同的名字,唯一不同的是这些界面、js放的路径不同,这种模式开发起来快、简单、复制、粘贴就OK,我个人觉得不足就是重用,重用性不好,记得以前一味大师说过,当写代码到复制、粘贴的时候,说明代码就需要重构了,也可能是时间来不急,同事只能这样子。
这样一来,如果界面或js(共用部分)木有bug最好,但是一旦有,那么那16个功能都会有,并且要去修改16个地方,在我修bug的时候,可是偏偏这一块的界面有问题,界面上的文字要修改、要加必填项提示和校验,这下可好了,要修改的地方可多了,一个一个去找吧,还好复制的有规律,比较容易,但是个人觉得通过抽象共用界面,只需要修改一个地方即可,但是代码逻辑可能相对copy、paste的方式复杂,但是也有它的好处。
自工作到现在,这个问题我也在想,那种方式更好呢?或者木有更好的,只有合适的吧。
JS文件拆分VS一个JS文件
我的方式
我喜欢的方式是按业务功能、JS功能拆分,达到松散耦合的目的,但是一定程度上可维护性不好,用同事的话说就是找一个方法还得找不同的文件中查找,很麻烦(这点在不规范的开发流程中确实存在,并且是相当的麻烦,有时候为了一个方法要翻好几个JS文件),但是,我觉得这个不是个神马问题了,因为规范的开发流程是可以避免的,现在会麻烦呢,是国为目前的开发流程或方式存在问题了(这个仅是个人看法)。个人觉得JS文件的拆分有一定的好处,一是重用的问题,按是职责单一,有人觉得js文件多了,但是可以部署的时候将js文件压缩成一个即可。
目前开发都是看需求,然后写代码,木有编写设计文档、也木有将脑中的想法落实到文档中去,JS文件、JSP分件的拆分随着自己心中的想法而写,时间久了,自己都可能搞不清楚,更不要说后续的开发者,目录划分、JS、JSP等文件的命名、及功能描述都需要落实到详细的设计文档都其它文档中去。当然后续的开发者不要一上来就是看代码,神马都不管,先搞代码,我觉得这个是开发人员最忌讳的,可是好多人往往这样子。
同事的方式
所有功能放到一个js文件中,个人觉得对于维护,只看代码,不关注文档的人,寻找某个方法简单、快速、容易,然而js文件内容量很大,达到上千行,滚动条长,翻着麻烦,且一个界面的功能放到一个JS中,导致一个JS文件承担的职责比较多,不太符合设计的一些原则。另外我也觉得一些用户可能只是经常使用一个功能点(可理解为一个操作,例如新增操作),只需要新增的JS,但是如果JS文件不拆分,导致你无论你需要那个功能都得引入所有JS代码,功能点或者功能(模块)之间耦合度比较高。
模糊查询不区分大小写
出现的bug列表中好几个是关于查询的问题,如果查询采用了like关键字,几乎所有的此类查询都区别了大小写,往往实际情况是不需要的,这些是吸取了教训,得记住我。
JSP、JS文件命名
小结
最近修bug的一点感悟的更多相关文章
- 调bug的一点感悟
出错时一定要先看错误日志,要知道出什么错了,所以平常在可能出错的地方都要输出错误日志. 不要根据脑中的设想去调bug,时间久了就没有耐心,一烦躁起来,思维定势了,就越调不出来了. 所以一般半小时还找不 ...
- 朋友,请待你的朋友——BUG好一点!
程序猿嘛,难免会被BUG缠身,我相信,没有一个程序猿在被BUG缠身时是感觉轻松的,消灭BUG一定是你最大的愿望.本周,我们团队的项目进入调试阶段,各种BUG层出不穷,眼看下个周就要进行项目答辩会,所以 ...
- 分析jQuery源码时记录的一点感悟
分析jQuery源码时记录的一点感悟 1. 链式写法 这是jQuery语法上的最大特色,也许该改改POJO里的set方法,和其他的非get方法什么的,可以把多行代码合并,减去每次 ...
- 转:五年java人的一点感悟
转自:五年java人的一点感悟 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自 己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了 ...
- 会编程的 AI + 会修 Bug 的 AI,等于什么 ?
2017-02-25 Python开发者 (点击上方公众号,可快速关注) 关于人工智能未来的畅想,除了家庭服务机器人,快递无人机,医用机器人等等,Lucas Carlson 认为人工智能在另外一个领域 ...
- 修bug感悟
今天遇到了两个问题: 1. 使用 python 的 PIL 库读取照片的尺寸,对于有些图片,长宽和显示的效果相反,原因是照片中的 exif 有个属性 orientation,表示图片的翻转角度,详细说 ...
- C# CRC校验的一点感悟
今天在鼓捣一个手持操作器的时候,遇到一点问题,记录一下今天的经验包 由于之前公司产品在校验时基本上都是和校验,今天在准备用C#模拟一个古董操作器的时候,却遇到一个问题,模拟器发出的数据,主板一律不回复 ...
- 谈谈对bug的一点想法,说说做好日志记录的重要性
说起程序猿,总绕不开的一个话题就是bug,估计每个程序猿听到某某测试跑过来一脸淫笑的告诉你这个功能有个bug的时候,总有种恨不得掐死他的想法.其实程序猿跟bug的关系,感觉有点像父亲和儿子的关系,自己 ...
- 关于提BUG的一点思考以及工作中总结的规范
在测试的工作中,提BUG是日常工作. 以前自己为了省事,省时,仅仅是截图,在图片上注明一下问题,就放到BUG库中了. 现在发现这样会造成开发的时间的浪费,增加了沟通成本. 对于BUG,当发现了异常时, ...
随机推荐
- MonkeyImage API 实践全记录
1. 背景 鉴于网上使用MonkeyImage的实例除了方法sameAs外很难找到,所以本人把实践各个API的过程记录下来然自己有更感性的认识,也为往后的工作打下更好的基础.同时也和上一篇文章& ...
- 关于PHP的工作流引擎
关于PHP的工作流引擎,除了三大主流开源:PorcessMaker(排名第一,因其有拖放式图形定义界面),RadiCore(基于PETRI NET)和CuteFlow以外,另外还有一个不为人知的,但却 ...
- a:focus{outline: none;} 如何去掉点击链接时周围的虚线框outline属性
1. CSS方式 在IE下是使用html属性:hideFoucs,在HTML标签中加上hidefocus=”true”属性即可,但这个属性是IE私有的,Firefox是不认的. 加了hidefocus ...
- Sql开发技巧
原文:Sql开发技巧 简介 本文主要介绍下述几个技巧: 使用Row_Number分页 事务 根据条件刷选记录的技巧 分页 主要是使用了Row_Number()这个函数.一般如下: declare @P ...
- win7 64位的apache2.4.9+php5.5+mysql5.6的安装
Win7 下64位的apache2.4.9+php5.5+mysql5.6.19的安装 1.首先下载文件 httpd-2.4.9-win64-VC11.zip(http://www.apachelou ...
- web.xml在listener作用与用途
一.WebContextLoaderListener 监听类 它能捕捉到server的启动和停止,在启动和停止触发里面的方法做对应的操作! 它必须在web.xml 中配置才干使用,是配置监听类的 二. ...
- Solr安装(Tomcat)
Solr安装(Tomcat) 安装环境 Windows 7 64bit Apache-tomcat-8.0.9-windows-x64 Solr-4.9.0 JDK 1.8.0_05 64bit ...
- Cocos2d-x 3.1.1开发环境
Windows7上搭建Cocos2d-x 3.1.1开发环境 前言 现在,越来越多的公司采用Cocos2d-x 3.0来开发游戏了,但是现在这样的文章并不多,所以打算写一系列来帮助初学者快速掌握C ...
- Android仿微信气泡聊天界面设计
微信的气泡聊天是仿iPhone自带短信而设计出来的,不过感觉还不错可以尝试一下仿着微信的气泡聊天做一个Demo,给大家分享一下!效果图如下: 气泡聊天最终要的是素材,要用到9.png文件的素材,这样气 ...
- 利用Matlab生成一个网格化的三维球面(生成直角坐标)
利用Matlab生成一个网格化的三维球面,分别对径向方向.经度方向和纬度方向进行网格化,代码如下: %生成一个笛卡尔坐标系下球面网格的x,y,z坐标 %r为球面距离 %nJingdu,nWeidu分别 ...