我从事一个软件项目(主要是单独工作)已有5年以上。首先是一团糟(我是从事此工作的第三或第四位开发人员),尽管现在已不再是一团糟,但它仍然杂乱无章。使它得到控制的进展速度令人不寒而栗,我开始对它所处的状态感到沮丧。我如何真正开始修复它?
项目细节:这是一个销售程序,几乎完全用Visual Basic Classic(VB6)编写,带有MySQL后端和用C#编写的报表引擎。C#报表模块非常有趣,它只是在过去的几年中编写的,而在此之前所有报表都是在Crystal Reports 9中完成的(是的,我们仍然有一些报表依赖于此)。
但是,实际程序本身就是一场彻底的灾难。总的LOC数不足9万,注释约有1万行(大多数不是文档,而是注释掉的旧代码)。158个表单文件和80个模块文件。我不知道实际使用了多少个,因为程序的某些功能被简单地弃用了(有时是这样),而没有从程序中删除相关的代码。我猜想只有50%的代码可以实际用于生产。
我害怕触碰很多代码,只是因为我不确定我是否正在破坏一个晦涩的客户所依赖的东西,这种情况发生的次数超出了我的估计。就像整个代码中散布着地雷一样。
该项目实际上没有任何结构。到目前为止,除了在我耐心改革的几个地方之外,它不是面向对象的。如果需要在表单上获取数据,则可以实例化数据库对象,然后在函数中声明查询,然后执行查询并对数据集执行操作。
当我开始从事该项目时,没有使用任何源代码控制。我试图鼓励其他正在使用它的人使用它,但是我是新手,试图让人们使用Subversion的尝试全部失败了。该公司的首席开发人员在过去的几年中终于发现了一个软错误,并且他确保所有开发人员现在确实在所有项目上使用了源代码控制,因此至少可以取得一些进展。
我认为,如果我能够全职进行该项目的改革,我将能够取得不错的进展,甚至可以估算出我完成整个项目所需的时间,但是该项目正在积极使用中,我经常被要求扑灭火灾,修复错误,添加功能等。
那么,我如何开始真正解决这个问题呢?尝试使用其他语言来工具VB6吗?尝试在业余时间重写程序吗?还是这完全没有希望?
更新资料
这篇文章发表后,我怀着新的热情回到了这个项目,但是在看到如此缓慢的进展之后,在几个月内又陷入了绝望。然后,在接下来的一年左右的时间里,我又重复了此循环2到3次。
从那以后,我转到了另一份工作。尽管经过了很多年的vb6,并且只有其他技术的外围经验,但是搜索仍然很困难,而且我在此过程中遇到了很多拒绝(一年中约十二次采访)。在这种情况下,我对他人的建议是考虑单独考虑这一因素。考虑保持这样的死胡同对您的职业可能造成的损害。