是使用函数还是使用类来实现代码重用?依据是什么?(200分)

  • 主题发起人 blue_morning
  • 开始时间
B

blue_morning

Unregistered / Unconfirmed
GUEST, unregistred user!
近来MIS的代码写得多了,发现自己在重用的方法变得不清楚了。一个方法应当创建在一个类中
,但是做为函数来共享也有不少的好处。请各位DFW谈谈自己的经验。
 
我也有同样的问题,
有时我甚至常常在想,什么是类?
RAD能实现oop吗?

概念上的混淆,导致工作上的混乱!
 
我觉得应该把函数按功能分类,封装到类中,这样比较符合面向对象把!
 
我觉得代码重用其实和代码COPY差不多。
因为不能将一代码写在一个地方,然后各个project都用那个代码。
那干脆COPY代码算了。
 
我觉得如果功能是单一、独立、共享的,用函数好,如果是面向继承的,用类。
不过,我觉得类不应滥用,我公司里有个家伙,几乎什么都用类,哪怕一个类
在工程中即只有一个方法,且没有任何继承类,弄的程序很可怕,几乎……
 
如果能清晰的感觉到一个函数是一个类的方法,那一定要做为类的方法,反之,则没毕要。
什么事不能免强来做,这样的结果没有好处。如果你的mis中用的全是共公函数,那就就没
有进入oop,所以,需要深入学习oo,然后,代码在oo方面才能自然。
我一直苦恼,不能感觉到oo的思维。
 
不同意
>我觉得代码重用其实和代码COPY差不多。
>因为不能将一代码写在一个地方,然后各个project都用那个代码。
>那干脆COPY代码算了。
 
我的处理方法是在程序的主窗体或数据窗体中写公共模块或过程。
 
多谢各位DFW。
taozhiyu:我比较赞成。
lew: 在java, C#中应当没有单独的函数吧?
yhaochuan: copy code应当不是代码重用的方法.
 
to blue_morning:
对于taozhiyu,我觉得没有必要把函数按功能分类封装到类中。
像 SysUtils、math 单元,是将函数按功能做成单元,而不是类,因为像这些函数,
功能单一、独立、共享,也并不是面向继承的,没有必要做成类,应该做成共享的单元。
如果做成类,工程中又有多处用到诸如power函数,那就要在一个单元中先定义个math
全局对象变量,再math:=Tmath.create,再让每个用到power函数的单元都use这个单元,
用到时再math.power,不可能这样做吧?而且这样做的意义是什么呢?
我始终不主张滥用类,因为类是对客观对象的描述,而不是一堆操作的集合。
java, C#我不懂,所以我也不知道!
 
>>来自:lew, 时间:2002-1-5 16:16:00, ID:836692
同意
 
对特定数据进行的操作应用类来规范。
对公共无根类数据一般用公共函数处理。
Delphi本身就这样处理。
 
不错,谢谢大家。再踢一脚。
 
赞成lew的说法,感受颇深,在我的代码中最多的到重用的不是类,而是自己写的工具函数,
但是类可以使整个系统结构清晰,所以程序总体构架我仍然是以类为主。
比如我的一个典型的工具函数:
function WidthOf(ARect: TRect): Integer;
begin
Result := ARect.Right - ARect.Left
end;
虽然很短,但对于提高程序的可读性和自注释性大有帮助,在绘图方面重用频繁。
 
其实函数和类的概念大家一定知道
函数适合完成单一任务的过程,
而类更适合完成更复杂的事件,他可以有相同的属性,方法等继承下来,
所以,根据他们的不同点,要看你需要重用的内容了。
如果重用的仅是某一项工作,使用函数,如画透明图片这样的任务(DrawTransparentBitmap),
但如果除了要画图还要设计画图外的其他的的工作,如文本标,签点击事件等(像一按钮一样)。
当然要使用类啦。
 
用类可能更好理解
 
把自己写的工具函数打包再重用是最好的,就象DELPHI
 
我看还是在具体的实际情况,有些人喜欢类,把所有的函数都堆在类里面,以致从一个Form
的一个操作都要一层层子类的传参数,很麻烦!但是有时为了软件的封装性,又不得不用类。
所以这个本来就天生很矛盾,还是看实际应用好!!
 
我个人认为用类了,结构不一定更清晰、更好理解,
倒是功能单一,接口简单的函数更好一些,
没有必要为了追求oop而一定采用类,
类太多了,继承来继承去的是一件很恐怖的事情。
但有一点,如果是一个小组和写一个项目,而且没个人的模块
关联性有不是很强,那么每人都写一个类是最好的了
自己都把自己那部分包装好,即不影响外部他人的,
也不让别人对自己类的内部进行处理
 
顶部