关于"程序的逻辑独立性"(0分)

  • 主题发起人 主题发起人 dwwang
  • 开始时间 开始时间
D

dwwang

Unregistered / Unconfirmed
GUEST, unregistred user!
在李宏光兄的帖子中我说到了"程序的逻辑独立性"问题,
引来很有意思的讨论,这里再说明一下:
写那个帖子时是在客户的眼皮底下拨长途到北京上网,
难免有点做贼心虚的感觉,果然忙中出错,Copy/Paste
的时候竟然全盘照搬李宏光兄的代码,只加了一个T,成为:
procedure Tform1.mypro ;
^
begin
form1.edit1.text:='123456';
end;

结果一下在被Another_eYes大虾抓住了把柄,实在惭愧,
正确的过程当然应该如:
procedure Tform1.mypro ;
begin
...
edit1.text:='123456';
...
end;

感谢Another_eYes大虾一针见血的指出那段程序的毛病(还真有点疼呢!)
不过,我所说的"程序的逻辑独立性"显然不是指这段代码,
而是我在第二种方法中建议的将Form作为参数传递的方式:
procedure MyPorc(theForm:TMyform;....);
begin
then
Form.Edit1.....
end;

这样,myProc就可以不必定义为TMyForm的成员,不必知道Form的名称,
而且也不一定定义在TMyForm的unit中。
实际应用中,以Form作为参数实际意义不大,但这方面最典型的例子
包括Field的OnGetText等等事件的定义,那里通过Sender将当前
触发事件的Field作为参数传递,从而可以使事件的代码不必
关心当前Field的名称,而对其数据进行处理。
我之所以提到这个问题,是因为看到宏光兄感叹"重复劳动的悲哀",
对于一个较大规模的软件系统而言,程序结构的优劣是至关重要的。
 
完全赞成!
 
我真的很佩服dwwang!观点鲜明!!且什么问题都要辩论到底!!!
我就缺少这重精神。
我的理论基础不好,但觉得这有一个选择性的问题:
如果本过程,对其它程序段意义不大,要保证类的相对独立,那么应该定义FORM中
如果作为通用过程,那么dwwang的做法确实很有好处!
不好意思,我心里有话就想说!个人观点,不党之处多多指出!
 
实际上在C++、Object Pascal等面向对象编程语言中
调用某对象的成员函数时,该对象的指针将作为函数的第一个参数传隐式地传递给函数,
在C++中,可以通过this来引用。
我觉得OO的封装特性对工程化开发的确有他的好处,
用全局函数虽灵活,但增加了程序的复杂性,需小心。
你所说的情况可以通过增加类的层次,利用多态特性来实现同样功能。
 
张德兄看来也对此有所研究,所说甚是.
补充一下:在Delphi中,self对应C++的this.
不过您对我所讨论的问题大概有所误解,
我这个问题不牵扯多态性.
 
对不起,上面一句话略有失误,应该说
这个问题本身不是直接与多态性相关,
但归根结底要解决这种问题,都要靠多态性来实现,
只是一般我们不把它上升到这个"高度"来讨论罢了 ^_^
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部