高人曰:不要用“全局变量”,要用“全局对象”(50分)

  • 主题发起人 张剑波
  • 开始时间

张剑波

Unregistered / Unconfirmed
GUEST, unregistred user!
例:一个MIS的基本信息放在一个表中,这些信息在程序中常常用到,
总不能不断的访问这个表吧,做成“全局变量”据说是不规范的,不符合
面向对象编程的概念的,是原先面向过程语言的程序员的易犯病。
那么我们可以不可以这样做:
在主窗体的ONCREATE的事件中创建全局对象,读表并赋值给全局对象。
然后就可以。。。。
各位朋友,能不能举个例子(来一段代码),或谈谈你的想法。
 
H

htw

Unregistered / Unconfirmed
GUEST, unregistred user!
全局变量为什么不能用,想用就用,当然能不用时还是封装起来用比较好。
 
H

hubdog

Unregistered / Unconfirmed
GUEST, unregistred user!
谁说全局变量不能用?
delphi的源码里面好多地方就用到了全局变量
当然也可以用全局对象,比如写成组件放的窗体上或写成全局对象。
这样的简单的东西还需要举例吗?
 

张剑波

Unregistered / Unconfirmed
GUEST, unregistred user!
我想应该是从Tobject直接create
从其子类create不太方便吧?
附部分原文:
1.不要用全局变量
即使要用,也要用全局对象来代替它。习惯了面向过程编程的程序员在这点上
很容易犯错,而且这一点相对来说也比较难掌握。实际上,全局变量也是面向过程编
程技术的一个很大的缺陷,难跟踪,难调试,也就难维护。
为什么要用对象而不是变量呢?对象可以封装对变量的操作,任何对该变量的操作
都必须通过调用对象的方法来完成,我们可以在操作该变量的方法中设置断点来调试,
这就解决了前面所提到的 3 个难点(难跟踪、难调试、难维护)。
 
L

liuxiaouo

Unregistered / Unconfirmed
GUEST, unregistred user!
<font size="4" color="red" ><p align="center"> 我同意</font></p>
以前我在一清华出的书里也见过;
他的主要思想也是全局变量很多的时候难调试,
时间久了,连自己都不知道某变量是干什么的;
 
Z

zhuhuan

Unregistered / Unconfirmed
GUEST, unregistred user!
所谓全局对象可以认为是一个内存管理器,所有变量的更新,存放,查找均由此对象完成
是一种比较良好的设计方法,实际在DELPHI里和一些有名的控件里(RX FASTREPORT)也经常
见到,实际的例子看DELPHI里的GUI Object的具体实现(TBrush,TPen)就明白了。
 

张剑波

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部