国电南瑞并网光伏系统发电性能评估项目开发总结

国电南瑞项目的青海版本差不多快做完了,闲下来先记录一下项目开发过程中出现的问题。
主要问题:

  1. 版本控制
  2. 现场修改和调试问题
  3. 用户体验

一、版本控制
版本控制不当导致的严重问题一共出现过两次,一次是张亮自己连续提交导致后面的版本覆盖掉了之前的,另一次是我在做切换页面保存提示的功能时,直接把线缆损耗页面的控件统一选取,并在属性界面双击添加了TextChanged(CheckedChanged)的委托,这些添加将之前的算法全部覆盖掉。而由于这个版本提交时是部署前最后一版,因此也导致了问题二的出现。
我们在使用github进行版本控制时,从一开始就没有规范一个统一的代码提交格式。包括我自己在内,版本控制出现第一次问题之前,提交的Commit Message都是偷懒写“合并”、“界面”、“同步”:
国电南瑞并网光伏系统发电性能评估项目开发总结
由于不写清楚提交/合并内容的缘故,当时在找第一次错误时发现之前写的算法不见了,找了好久,最后才定位在四个“合并”上:

国电南瑞并网光伏系统发电性能评估项目开发总结
后来长记性了,不管怎样每次都要多写两句,好方便定位。但在之后最好还是要按照一些规范来进行commit。比如https://eggjs.org/zh-cn/contributing.html
二、现场修改和调试问题
5号和张亮还有董老师去了西宁,到了一开笔记本先发现matlab runtime崩了,项目不能在我的笔记本上跑,但是编译还是可以的,张亮的笔记本没装Installer Project没法打包软件,装到一半卡住,关了重开结果vs也炸了。我俩的vs2015之前就因为不同的问题都打不开,而国网研究院里面是没有外网的,只能跑回宾馆重装vs。结果还是不行,安装失败。但办法还是有,装个虚拟机里面再安装vs,这下倒是可以编译运行,但一天也就没了。
第二天过去才想到可以在服务器上远程直接调试,服务器的E7cpu比笔记本的速度不知道快了几十倍,matlab runtime一分钟装好,vs上个厕所就装完了一大半,国企还是有钱(当时划服务器虚拟机给我们的时候填表申请配置,我们软件不用装数据库,2GB足够用。结果填了个40GB硬盘,人家说“我们最少划160G”)。装完后vs的问题暂时搞定,但工程编译后跑起来报SQLite库的错,搞了几个小时发现是工程的问题,让同学帮忙从宿舍电脑把工程打包发过来,结果一点事没有,到现在也没弄清楚原因在哪。
然后就出现了由于提交导致的代码丢失问题,把两个版本手动合并一下后解决。但运行后发现结果不对,改代码又改了好久,虽然不属于我的部分,但在带过来之前我也应该对软件进行检查,到了第三天的上午总算弄完了。
前前后后出了不少问题,虽然作为开发人员对这种情况见怪不怪了,但本来一天能部署好结果用了两天半,主要问题就是准备不充分,下次一定要提前做准备。
再一点就是赶紧换笔记本。
国电南瑞并网光伏系统发电性能评估项目开发总结
(临时办公地点,差点就坐进了隔壁的院士专家办公室)↑
三、用户体验+边界条件问题
用户体验这个东西,我作为一名程序员真的是有些无能为力。团队里面又没有美工,每次客户跟我说“这个界面太难看了”“整体色调要改成跟他们那样”我都只能说做不到。界面确实没有办法,但操作体验这块我自以为还是可以的,整个软件中的(我负责的)所有功能都能在三步操作以内到达。为了在软件的几秒Loading里面减少等待的不耐烦感,我用多线程对每个模块的初始化阶段做了进程展示,为了减少操作失误所做的保存提示,看了好久的AOP(虽然没用上),最后一个一个控件加Changed的委托。所有控件需要做的也都做了有效性检测。我能想到的能改善体验的部分,都力所能及地做了优化,就算是写起来复杂的小功能我也尽量能做就做。但即便如此,一个程序员的眼光总不能代表用户的感受,这也是没办法的事,以后还是要尽量提高自己的审美水平。
总的来说,这个项目给我最深印象的,就是“加一个TextBox就要写n个函数,改文件输入输出,改保存函数,改Load函数,加几个try-catch”,由于*造的还可以(自认为),避免了更多的改动。但整个工程下来还是有些繁琐的,可能是我*造的不够好、技术不够或者是Winform真的太难用,总之,提升技术水平才是关键。虽然这个项目涉及的算法并不复杂,但如果让现在的我从头再做,至少能让工程量减少一半,这也算是一种经验上收获吧。
最后一点,第三方库能少用就少用,不是说尽量不用,像这次不过几M几十M的数据,其实没必要上SQLite了。再比如Matlab Library这种东西一加载就要个半分钟,其实不如在c#里面自己写来得快。