当我完善几年前的一个老项目时,我做了哪些改进

最近几个月利用业余时间完成了一个项目。这个项目其实是2008年我在前公司做的一个web项目。后来客户想要对项目做升级,牵扯到一些功能的变动及界面的修改。由于当时整个项目的架构和主要编码都是我做的,所以前公司老总喊我来接这个项目,使用业余时间完成。我考虑了一下答应了。为了挣点钱养家就拼点呗。

几个月前在接这个活前,我曾写过一篇文章如果让我完善几年前的一个项目,我会做哪些改进?。主要从工程实践的角度讲述了我将进行那些改进。

经过几个月的辛苦开发,终于完成了这次的功能升级,拿到了报酬。针对这种遗留系统,我来谈谈我具体都进行了那些改动。

  1. 不用动的地方尽量不动。由于代码是08年我作为实习生写的,那代码自然惨不忍睹,有些地方写的非常累赘。经过几年打磨的我对代码质量要求已经上升了很多个层次,看到这些烂代码不禁忍不住要重构。但是我忍住了,因为这是个遗留系统,当时就没有写单元测试,所以重构过程肯定风险较大。另外工期只能用业余时间,要以新需求为主,只改开发新需求时需要碰的那些代码。
  2. 使用github作为代码托管服务。即使是一个人开发,也需要使用源代码管理工具,这样做起来自己心里才有底。而github自己用了好几年了,非常好用,而且自己买了github的会员。所以这次把代码以私有仓库的方式放在上面。随时写,随时提交,比自己搭建源代码服务器方便的多。
  3. 引入bootstrap框架作为前端框架。这次升级一个重要任务是对前端进行优化,使其能兼容多个浏览器。08年的时候大家都在用IE6,IE7,IE8都很少有人用。过了这么多年网站早都不能兼容现代浏览器了,而且屏幕分辨率适配也很差劲。作为一个前端菜鸟,我只花了一点时间学习了bootstrap,就快速把它引入到了我的项目中。我基本上把以前的css、js代码都删除了,使用bootstrap轻轻松松的就把这个老站改成了一个兼容多个浏览器,多种屏幕尺寸的网站。
  4. 升级.net中使用的各种组件。这个网站使用的是WebForm框架,版本为2.0。我发现在现代浏览器下WebForm组件生成的前端HTML,CSS及JavaScript存在大量不兼容的问题。网站页面变得很不稳定。当升级到4.0平台后,问题得到大大改善。另外我还使用了AjaxControllToolKit组件,发现在某些浏览器下(比如360浏览器)页面局部刷新不了。所以我也一并升级到了最新的15.3版本。虽然把各种组件都升级了,还存在一些JavaScript问题,比如日历选择框无法正常显示与选择。我采用的方法就是抛弃掉旧的JS代码,寻求成熟的JS框架来替代。比如使用bootstrap-datepicker组件来实现日历框的选取。
  5. 采用最新的Visual studio编辑器。微软终于想通了,与其让我们天朝成天用盗版的Visual Studio,不如直接开放一个社区版出来。我下载了Visual Studio 2013社区版,并给其装上了ReSharper组件。由于ReSharper是收费的,但是有差不多1个月的试用期。之前一直使用Intellij开发工具做开发,能在Visual Studio 2013中使用它也是觉得很爽。
  6. 引入了package管理工具,使用Nuget来安装、管理各种项目依赖。使用过程中我发现Nuget没有Java平台下的Maven或Gradle强大。很多依赖都不是最新版本,管理理念也不太一样。不过聊胜于无吧。像bootstrap等前端组件以及ajaxcontrolToolkit等后端组件我都是通过Nuget来管理的。
  7. 使用事务机制处理系统中的核心逻辑。这个系统是一个编码管理系统,主要处理***、雷管编码的整个流通过程。系统有的时候会出现重复编码的情况,比如一发雷管的编码同时存在于库存中和消耗库中。这是由于雷管从在库状态转换为消耗状态时出了问题,并没有在库存中删除该编码。这次升级我把类似的逻辑都用事务来处理,一旦发生异常就会整体回滚,不会造成脏数据的情况。

其实我还想引入的几个点由于种种原因都没有完成。

  1. 没有添加单元测试。本来想给Vistual Studio 2013添加单元测试框架,奈何花了几个小时都没整好。另外工程目录方面也需要进行一定的调整来引入测试项目,整了一次没搞定后也不了了之。由于这次升级80%功能是前端页面的改进,涉及后端代码修改的不多,所以没有单元测试的情况下修改已有代码还是比较有信心的。
  2. 没有引入持续集成。还是时间成本的原因。毕竟这个活都是使用业余时间完成的,搭建C#栈的CI估计要花上好几天,所以最后并未实现。
  3. 自动化部署。之前对.NET下的网站的部署都是手动的,将编译生成后的文件复制到服务器上,暂停IIS,重载文件,重新启动IIS。其实这些都是可以自动化完成的,自己没花时间研究,所以也未实现。
  4. 使用成熟的log框架给系统关键逻辑打上log。这个纯粹是自己懒,不想做。因为加log方便自己以后排查错误,对客户来说没有任何影响,自己就懒得弄了。
  5. 没有引入自动化测试。还是时间成本的原因,编写web的自动化测试太花时间了,所以只能舍弃。
时间: 2024-08-01 01:48:53

当我完善几年前的一个老项目时,我做了哪些改进的相关文章

requested-我的myeclipse 2014 tomcat7.0开发一个小项目时突然变成了这个样子

问题描述 我的myeclipse 2014 tomcat7.0开发一个小项目时突然变成了这个样子 HTTP Status 404 - /DaoMei/ type Status report message /DaoMei/ description The requested resource is not available. 所有的页面都是这个样子. 我是一边调试一边谢代码的.调试的过程中就变成了这样,所有的页面都打不开. 解决方案 Eclipse工具栏project重新clean一遍 解决方

tomcat-新手学习,创建一个网络项目时遇到的的tomca问题,谢谢指导

问题描述 新手学习,创建一个网络项目时遇到的的tomca问题,谢谢指导 新手学习中,当我在用eclipes ee 4.5 时,如果数据库打开的话,tomcat 8.0总是出现已被占用,出现这样的信息:Port 8080 required by Tomcat v8.0 Server at localhost is already in use. The server may already be running in another process, or a system process may

android开发-android 创建一个新项目时src目录下没有任何东西

问题描述 android 创建一个新项目时src目录下没有任何东西 用eclipse最新版本开发一个android程序,结果创建时src目录下没有任何东西(包),可以创建包,然后建class,但不能建一个Android Activity,以前还没有这个现象,但是我在Android Sdk Manager下载了很多Sdk版本后就这样了,很无奈,安卓开发菜鸟,求助各位大牛!

三年前的一个小项目经验,分享给菜鸟兄弟们

原文地址 (公文收发小软件:前期需求调查部分) 日期:2009年1月1日  晚上 分类:项目开发经验 两年前还在宁波时,我做过宁波教育局的一个小项目,一个部门内部使用的公文收发记录软件.这个项目当时是跟他们网络中心的老师洽谈的,负责此事的老师跟我们年龄差不多,估计不到30岁,主要管理日常的硬件和网络,对开发软件了解得不多,但是也懂一些. 当时客户跟我讲,他们有一个用FoxPro做的软件,用了十年了,一直没更新,而且无法在Windows 2000等操作系统上运行,必须单独用一台装了Windows

一个老菜鸟站长的做站心得经历

可能用DZ程序作站的站长里没几个年龄比我大了吧,再怎么说,我也算是第一代个人站长,呵呵,先介绍下本人的一点情况:本人性别男,今年32岁,在参公的事业单位任中层干部. 我第一个站是在1999年,那年正是腾讯OICQ出现的一年,版本是多少就记不清楚,那个年代,刚刚掀起个人网站浪潮,当时的网易.搜狐如日中天,丁磊.张朝阳等是中国互联网的传奇,学法律的我也对蓬勃发展的中国互联网充满了好奇.那时候的动态网站技术主要是CGI语言,微软刚刚推出ASP,就连FLASH.DREAMWEAVER都是刚刚出现,呵呵由

克隆一个新项目的快捷方式_php技巧

有没想过最土的项目如何快速复制出一个来,然后改改就成新的团购项目了? 或者说编辑一个老项目的时候想把他另存为一个新项目而不是保存, 看下图 红色部分 具体开发代码(非细节),如下 修改模板,加入按钮 include/template/manage_team_edit.html <input type="submit" value="保存为新项目" name="commit" id="leader-submit" clas

关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题

 问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个Android项目时,又会再多出一个appcompat_v7_2,如果再次创建,会以此类推地创建出appcompat_v7_x格式的"多余项目"出来(此情况在ADT升级为22.6.x版本后出现,22.3.x前的版本不会有) 查明原因: ADT在22.3.x版本前没有出现该情况,升级为22.6.x版本后,才出现该情况,可以猜测是新版本导致.猜测到

一个老网站或者说一个成熟网站的标准是什么

我们经常听到大家说一个老网站和新网站这两个关键词,大多会以时间来定义,比如1-3个月网站是新站,新站就有什么新站效应,新站有临时权重,所以定义这个概念也是有意义的.3-6个月就可以称之为不老不新的网站,半年以上的网站就可以称之为老网站了,一般情况之下1-3个月的网站可以解决收录快照等问题,一般程度竞争的关键词也会有排名.3-6个月这段时间就可以把排名冲上去,而半年之后就是一个老站了,这时候我们一般的情况就是维护网站的排名,以及做长尾关键词的排名了,估计一般情况之下就是这样定义老网站和新网站的吧?

一个老程序员新站长的感言

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我2003年离开混了四年的大学校园,签到一家小国企上班,做了一名程序员.眨眼间在那里混了5年,这期间中国互联网不停歇的高速发展了五年.2008年底合同到期了,看看蓬勃发展的互联网,再看看自己萎缩的钱包和黯淡的前程,心里很凄凉,我毅然决定辞职,另谋发展. 于是我成了传说中的soho一族. 辞职了,炒了老板了,心情爽了,可是辞职以后要干什么呢?我