【学无止境】记一次难忘的.NET开发经历

问题

公司有一个页面,是在“远古时期”使用 .NET 框架开发的,一直用到现在,也没啥问题,很久都没有进一步开发的需求了。

最近用户发现了一个 BUG ,需要有人来修复。但是小组中没有人会 .NET 开发。于是这个 BUG 就一直搁置在那。

不过该修的 BUG 还是要修,所以我只好火线救援,硬着头皮接下了这个难缠的活。

BUG介绍

这个 BUG 是这样的:

用户首先在页面上进行一次搜索操作,得到了某个返回结果 A 。
然后用户在页面上进行一次修改操作把 B -> C
最终,实际发生的是 A -> C 。而 B 没有改变。

BUG修复

经过分析,这个 BUG 是由于页面的 Context 设置错误导致的。

当第一次搜索结果完成时,页面的全局变量 Context_Global = A
而发生修改操作时,修改的对象没有取值 Context_Modify = B ,而是使用了 Context_Global = A ,于是导致了错误。

修改很简单,把这一处的 Context_Global 变成 Context_Modify 即可。

在过程中,我遇到了四个挑战。

挑战1

首先,最初的挑战是开发工具的选择和安装。

从同事的口口相传中,大概知道上一代开发使用的 IDE 是 Visual Studio 2010 。但是公司电脑现在已经升级成 Windows 10 了,且软件库中已经不提供 VS2010 这个版本了。于是只好装了 Visual Studio 2019 。希望到时候不会出兼容性问题。

打开之后,发现需要 license 才能开发。否则试用版很快就过期了。于是又联系 IT 部门装 license 。但是公司分配到项目组的 license 数量有限,需要协调组员,看看哪个人的不用了,把他的 license 转移过来。

装完了之后 IDE 是可以打开了,但是发现 .NET Framework 没有,于是只好再联系 IT 装上。

挑战2

其次,另一个挑战是没有文档,两眼一抹黑,所有信息都要靠自己摸索。

代码路径不详:只能上代码仓库搜,然后看里面的内容大致判断是不是。
版本控制不详:代码拉下来了,但是用哪个分支呢?只能一个个看,哪个有比较新的提交,然后结合名字判断一下。
项目结构不详:具体真的要看代码了,一个大的 project 下面,有七八个小项目,哪个是对应到我要改的页面的呢?只能一个个看,根据关键字搜索。
项目架构不详:找到我要改的项目了,在修 BUG 之前,我习惯从宏观上理解一下整个项目的架构和流程,没有文档,只能自己一点一点看。基本判断是 MVC 架构的项目。

挑战3

第三个挑战是开发环境的环境变量配置中有很多坑。

代码看得差不多了,我想接下来先把这个页面跑起来,尝试复现一下这个 BUG 。运行按钮一点,然后就报错。除去一些配置文件的比较繁琐的错误,典型的有以下两个错:

  1. 没有权限访问该页面
  2. Oracle DB Connection 无法连接

第一个错,根据 log ,我把自己的用户 ID 加到权限配置中,解决。
第二个错,一开始尝试在本机装 Oracle Connector 无果,于是把 DB 改成微软自带的 SQL Server ,解决。

挑战4

代码终于改完了,测完了,终于到上线的阶段了。把包发给运维人员在生产环境部署,完了说页面打不开了,报错。

搞了半天,我发现原来线上的代码和开发的代码其实是不一样的。这也太坑了吧。

没办法,只能以生产的代码为准,于是紧急地把线上的代码拉下来,然后我再在上面改。改完了重新部署上线,解决问题。

总结

总结来说,这次尝试一个自己并不熟悉的开发领域,是一次难得的宝贵经历。我遇到了一系列的的挑战,并一一解决。

  • 【挑战】开发工具的安装与选择
  • 【挑战】缺乏文档
  • 【挑战】开发环境配置信息错乱
  • 【挑战】上线部署时的代码不一致问题

收获有三:

  • 文档很重要,方便二次开发
  • 代码规范和架构很重要,方便二次开发
  • 遇桥搭桥,遇山开山
posted @ 2020-12-25 14:46  MaxStack  阅读(3)  评论(0编辑  收藏  举报