程序主界面的作用

原创 2007年09月25日 11:14:00
       在桌面程序中。都会有一个主界面。从我经历的 项目来看,每个主界面都包含了大量的方法。我以前参与过的一个项目的MainForm的代码量居然有2W行。造成这个问题的原因有两个: 第一是 主界面是系统的主控制器。系统的大部分功能都在这里展现出来。大量的菜单、工具条当然需要大量的代码来构造,挂接事件。处理事件。第二个原因和VS.net有关系。一般我们都通过VS.net工具直接挂接事件。这样事件的响应方法就在主界面里面。大部分时候我们都没有很好的将业务方法和界面分离。这样主界面里的代码量庞大就是必然的了。
       除了代码量巨大以外,它还带来一些问题,首先这样大量的代码要维护其可读性是一项大的挑战。其次由于代码都对在一起,不同子系统之间的互相依赖也被强化了。
       在开发了多个项目以后,我很想改变这种做法。我想在的想法是主界面就是一个控件容器。我们把控件放置在这个Form上面就可以了。至于它要挂接的内容都在别的地方处理。
        目前我的具体做法是:
        1.在主界面中声明所有的控件 (都为 internal)
        2.在主界面中提供对系统各个部分的数据模型的访问方法
        3.对于每一组控件提供一个UI类来负责构建控件、响应事件等工作。
        4.业务方法都封装为特定的类,这些类在第三部的 UI类中的事件响应代码中完成对数据模型的更新。
  
        使用这种方法有一个很显著的问题.那就是主界面上的所有控件的访问级别至少必须是internal。有可能还需要public .在开始考虑使用这种方法的时候。觉得不应该将这些东西暴露出来。但是实际上除了UI类以外没有别人需要访问这些控件。所以这样做是可以的。如果为每个控件写一个geter/seter的,那代码量就大了。而且会显得多此一举。因为我们分解主界面的主要目的是减少主界面的代码量,提高代码的可读性、降低不同子系统之间的耦合。
     而这些UI类本身对主界面有依赖,以及关系紧密的子系统互相之间有所依赖也是可以的。

一点小感受:界面和程序的分离

1 Windows程序,界面和程序是源码级混合 Windows系统下的GUI程序,界面(GUI)与程序其他部分逻辑上是分离的,但是源码上直接交互,界面功能直接通过调用Win32 API来实现。 例...
  • smstong
  • smstong
  • 2016年09月07日 10:27
  • 3129

程序主界面的作用

       在桌面程序中。都会有一个主界面。从我经历的 项目来看,每个主界面都包含了大量的方法。我以前参与过的一个项目的MainForm的代码量居然有2W行。造成这个问题的原因有两个: 第一是 主界...
  • zhuliangxiong
  • zhuliangxiong
  • 2007年09月25日 11:14
  • 2130

新浪博客界面效果

新浪博客界面效果 用过新浪的博客以后,觉得它做的界面非常好看,也很符合人们使用的情况,现在我就讲界面的一些特色描述一下。 注册界面 填完一个输入框后,马上进行有效性检查  填写正确给出正确提示  点击...
  • sunlen
  • sunlen
  • 2006年08月01日 00:25
  • 3344

launch界面

去年做了launcher相关的工作,看了很长时间.很多人都在修改launcher,但还没有详细的文档,把自己积累的东西分享出来,大家一起积累.这份源码是基于2.1的launcher2,以后版本虽有变化...
  • liwei405499
  • liwei405499
  • 2014年12月18日 22:33
  • 391

第一个带界面的Windows程序

编写Windows程序,要包含 windows.h 头文件。windows.h 还包含了其他一些Windows头文件,例如: windef.h:基本类型定义winbase.h:内核函数wingd...
  • gudongxian
  • gudongxian
  • 2015年02月06日 22:12
  • 678

软件界面的重要性

 软件界面的重要性本文作者:周奕     在我的软件早期版本发行的时候,可以说没有什么界面,就是个基于对话框的应用程序.    软件上传 到Download.com 和HOTFiles.com时,什么...
  • Dreamfine
  • Dreamfine
  • 2005年10月06日 23:40
  • 786

页面加载的顺序和window.onload的作用

在说我们的主题之前,我们首先来看几段代码:   例子一、首先我们把script代码块放在head标签内,运行之后发现,点击按钮没有反应。 test1 ...
  • xixiruyiruyi
  • xixiruyiruyi
  • 2016年12月08日 17:31
  • 1622

Qt事件处理(三)

Qt处理事件的第三种方式:"在QObject中注册事件过滤器",如果对象使用installEventFilter()函数注册了事件过滤器,目标对象中的所有事件将首先发给这个监视对象的eventFilt...
  • imxiangzi
  • imxiangzi
  • 2015年09月02日 12:23
  • 234

微信主界面

转载 :http://blog.csdn.net/lmj623565791/article/details/41087219 Activitypublic class Main2Activity e...
  • wqewq19
  • wqewq19
  • 2016年07月08日 09:43
  • 406

[1.1] 第一章 用户界面的重要性

h1.my { font: 22pt 黑体; font-weight: normal; } h2.my { font: 22pt 黑体; font-weight:...
  • richardbao2000
  • richardbao2000
  • 2006年12月07日 14:46
  • 1925
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序主界面的作用
举报原因:
原因补充:

(最多只允许输入30个字)