写在前面话

项目从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文件命名

我的习惯是除目录区分之外,给每个界面取一个有意义的名称,例如,人员管理,我会用xxx/userManager/userManager.jsp这种目录结构,而同事的习惯是xxx/userManager/index.jsp,所有功能主页都是使用index.jsp,当然如果使用个别,个人感觉不错,看到这个界面,就知道它是某个功能的主页了,可是当打开的多了,就不好区分了,当然各有优势。


小结


纯属感受,无优劣之分

最近修bug的一点感悟的更多相关文章

  1. 调bug的一点感悟

    出错时一定要先看错误日志,要知道出什么错了,所以平常在可能出错的地方都要输出错误日志. 不要根据脑中的设想去调bug,时间久了就没有耐心,一烦躁起来,思维定势了,就越调不出来了. 所以一般半小时还找不 ...

  2. 朋友,请待你的朋友——BUG好一点!

    程序猿嘛,难免会被BUG缠身,我相信,没有一个程序猿在被BUG缠身时是感觉轻松的,消灭BUG一定是你最大的愿望.本周,我们团队的项目进入调试阶段,各种BUG层出不穷,眼看下个周就要进行项目答辩会,所以 ...

  3. 分析jQuery源码时记录的一点感悟

    分析jQuery源码时记录的一点感悟      1.  链式写法      这是jQuery语法上的最大特色,也许该改改POJO里的set方法,和其他的非get方法什么的,可以把多行代码合并,减去每次 ...

  4. 转:五年java人的一点感悟

    转自:五年java人的一点感悟 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自 己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了 ...

  5. 会编程的 AI + 会修 Bug 的 AI,等于什么 ?

    2017-02-25 Python开发者 (点击上方公众号,可快速关注) 关于人工智能未来的畅想,除了家庭服务机器人,快递无人机,医用机器人等等,Lucas Carlson 认为人工智能在另外一个领域 ...

  6. 修bug感悟

    今天遇到了两个问题: 1. 使用 python 的 PIL 库读取照片的尺寸,对于有些图片,长宽和显示的效果相反,原因是照片中的 exif 有个属性 orientation,表示图片的翻转角度,详细说 ...

  7. C# CRC校验的一点感悟

    今天在鼓捣一个手持操作器的时候,遇到一点问题,记录一下今天的经验包 由于之前公司产品在校验时基本上都是和校验,今天在准备用C#模拟一个古董操作器的时候,却遇到一个问题,模拟器发出的数据,主板一律不回复 ...

  8. 谈谈对bug的一点想法,说说做好日志记录的重要性

    说起程序猿,总绕不开的一个话题就是bug,估计每个程序猿听到某某测试跑过来一脸淫笑的告诉你这个功能有个bug的时候,总有种恨不得掐死他的想法.其实程序猿跟bug的关系,感觉有点像父亲和儿子的关系,自己 ...

  9. 关于提BUG的一点思考以及工作中总结的规范

    在测试的工作中,提BUG是日常工作. 以前自己为了省事,省时,仅仅是截图,在图片上注明一下问题,就放到BUG库中了. 现在发现这样会造成开发的时间的浪费,增加了沟通成本. 对于BUG,当发现了异常时, ...

随机推荐

  1. 顶级jQuery树插件

    顶级jQuery树插件 顶级jQuery树插件 2013-03-05 17:20 139人阅读 评论(0) 收藏 举报 jsTree JsTree是一个基于jQuery的Tree控件.支持HTML.J ...

  2. DDD分层架构之仓储

    DDD分层架构之仓储(层超类型基础篇) 前一篇介绍了仓储的基本概念,并谈了我对仓储的一些认识,本文将实现仓储的基本功能. 仓储代表聚合在内存中的集合,所以仓储的接口需要模拟得像一个集合.仓储中有很多操 ...

  3. 快速构建Windows 8风格应用25-数据绑定

    原文:快速构建Windows 8风格应用25-数据绑定 本篇博文主要介绍如何将UI元素与数据进行绑定.数据绑定的方向.数据更改通知.数据转换.数据绑定支持的绑定方案. 数据绑定是一种简单方式来显示数据 ...

  4. 初识Python-web框架的这两天

    前段时间打算学习python,其实时间蛮紧张的,看看文字教程,累了就看视频教程.算是把基本的语法过了一遍,但是OOP就费了好大的气力 ,C里有的对象,继承,等等等,还算能理解.不过高级点的就理解起来吃 ...

  5. 因下面文的损坏或丢失windows/system32/config/system 解决方法

    这是因为你电脑的初始化文件遭破坏所致.导致破坏的原因也可能是病毒或其它原因. 因为Windows启动须要读取Syatem.ini,Win.ini和注冊表文件,假设C盘根文件夹下有config.sys, ...

  6. sql datalength与len区别用法

    原文:sql datalength与len区别用法 len ( string_expression )参数:要计算的字符串 len() 函数len 函数返回文本字段中值的长度. sql len() 语 ...

  7. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  8. IE6浏览器不支持固定定位(position:fixed)解决方案

    代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...

  9. 我的Android 4 学习系列之开始入手:配置开发环境与理解Hello World!

    目录 如何安装Android SDK.创建开发环境和调试项目 移动设计中一些注意事项 使用Android虚拟设备.模拟器和其他开发工具 如何安装Android SDK.创建开发环境和调试项目 下载和安 ...

  10. 手机新闻网站,掌上移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发

    我们坐在地铁,经常来查看新浪手机新闻,腾讯新闻.或者刷微信看新闻更多功能.你有没有想过如何实现这些目标.移动互联网,更活泼. 因为HTML5到,jQuery Moblie到.今天我用jqm为了给你一个 ...