分类: 项目管理
2008-08-10 00:07:38
繁琐数据管理的UI设计任务总结
在过去的2个月我一直在完成一个UI任务的实现,该任务中所有界面的工作就是要完成许多配置项的设置。任务相对单一,不外乎包含以下四个方面的工作:
1. 读取配置项。
2. 按要求显示配置项。
3. 相应配置项修改时界面的变化。
4. 保存配置项修改。
如果任务涉及到的是几个页面,那么事情相当简单我们可以让每个页面完成重复的工作
1. 制作界面资源
2. 读取相关配置项,将配置项按根据界面显示,
3. 制作该页面需要的界面动作处理的消息响应函数来完成修改界面时配置项的连动
4. 保存修改
而我们面对的接近50个的页面,的确我们可以不花脑子的每天Control-C, Contrl-V的完成这份工作。这样做的结果是什么呢,面对不断更新的需求,我们的工作日复一日的重复,我们Copy出来的代码,不断增加,呵呵,也许真有家伙对着自己拷出来的几千行代码得意洋洋,很有成就感。不过,但面对功能的更改和配置项读写接口的更改时,会发现,你要更改的也将是成千上万行的代码,oh ,my god!不得不佩服汉语的博大,什么咎由自取,搬起石头砸自己脚。
孟子中说诗经早就提到了,“永言配命,自求多福”。为了不让自己陷入自己挖的深渊,我们一早就要开始考虑以后可能的变化,把变化封装,把重复的劳动让一个人干,这样既可以让目前的工作省时省力,也可以让未来的你悠闲的有时间喝一口茶,听一段音乐,抑或有时间出去散散心而不必在公司继续加班,大叫命苦。
说干就干,前期自己的考虑加上和前辈们的讨论,得出了一个方案
如图所示
类App负责了整个任务中views、ctrls的创建,show,view之间的跳转等。
类Ctrl负责view的数据读取、写入、以及暂存修改
类View负责show出数据。
其中Ctrl和View组成了观察者模式,多个关系紧密的view注册一个ctrl中,以便ctrl有变化时及时更新旗下的m_views。
这样一来,我需要做的工作明确
1. Ctrl基类中一套读写底层数据的接口,提供给view读写ctrl中读写数据的接口。Ctrl子类负责填写具体ctrl中涉及的数据标示,以及数据间的关系
2. View基类中一套消息响应处理相似的变化,一套根据界面控件与数据关系初始化界面的接口。View负责子类填写具体页面中控件与数据的关系表格,以及控件类型。
3. App负责页面间跳转的消息处理。
大致的工作便是如此,具体的细节这里不多说。
做完这项工作的收获:
1. 开始意识到code前的design是很重要,想不清楚,请别动手
2. 开始意识类的封闭及可扩展性,在基类中哪些接口应该封装,哪些接口子类可能要用的protected给它,哪些接口子类需要重写的virtual出来,不要试图让基类包揽所有的活,要让你的设计稳固适应变化就必须有可扩展的接口
3. 注意到编码规范的重要性,在debug过程中发现许多笔误、内存泄露、以及乱到自己都觉得不可阅读的情况。
4. 开始意识到需要思考如何与组员沟通,即表达自己的观点,由要让人舒服的接受。而且学会乐意接受别人指出自己的不足或错误。