这两天在改个界面,我的眼睛都快看成对眼了。
界面表面上看其实很简单,没什么逻辑要求,一个强大的界面,也往往可以由不加思考的代码堆积实现。但是,如果考虑到维护,再修改,界面代码还是多多考究为妙。
目前,本人手上这个界面是MFC开发出来的,进入代码内容,一大堆的GetDlgItem及MoveWindow,一眼就可以读懂这些代码是在干什么,它们就像是搬运工将各种控件按最初设计人员的想法依次摆得有模有样。继续读下去,我迷失了,什么500,600,430,320这样的天文数字都泛滥了,推测完它们的意思后我觉得自己都可以去写侦探小说了。可想而知,这些天文数字造成的最后灾难就是不可维护。实际上,控件移动的位置是按照固定的屏幕分辨率计算出来的,当项目有新的屏幕分辨率需求时,这一大堆数字实现的结果可就丑陋无比了,界面如同穿着一双不适合的鞋子,怎么看怎么不顺眼。说白了,也就是设计人员当初没考虑屏幕自适应,最后摊子越摊越大,现在改起来想当费时。
我拿到该界面的修改任务后,首先熟悉了一下整个界面的框架,大体摸清当时的设计思路。然后,我重新估算了主要界面及控件的占用比例,定义了一些比例变量。接下来,就是按照分配的比例,一个界面一个界面一个控件一个控件的重新调整与修改。到最后,这种工作就显得很机械化,调整-看效果-再调整。在修改过程中,我的工作就像做wxpython里sizer的工作,只是MFC没有这样的功能。
所以,开发不是单纯的写代码,大部分工作还在需求分析、功能设计上面,否则即使项目按进度完工,在维护阶段也会有各种问题接踵而来。