Delphi中的对象编程

几次参加面试的过程中,我对应聘的Delphi程序员均问了以下问题:”Pascal是第三代面向过程的编程语言,但从八十年代就转为面向对象了,你对Delphi目前的面向对象支持有什么样的看法?”.
我相信很多资深的Delphi设计师者阅读了大量的Borland公司书写的Delphi源码.这些源码是这些设计师们的良师益友.我也看了很多程序员用Delphi书写的代码.他们写的代码与大学时教我Basic课程的老师给出例子代码差不多,一大堆的全局变量,一大堆的通用函数.我计算了调用这些函数的次数,80%的函数只调用了一次,也即这些所谓的通用函数并不是作者设计时想像的那样通用.
这种编程思维本身还停留在70年代的面向过程编程.或许这也与Delphi的框架有一定的原因吧.你每次创建一个窗体时,单元文件里会自动创建一个窗体类的全局变量(也即实体对象),这其实是一个很差劲的实现,虽然它的实现目的我认为很简单也很实用:你不需要编程就可以运行一个带有一个窗体的程序,该窗体设为主窗体,Program文件中会创建该实例.
面向对象编程的概念应该在专业编程课程中有较为详细的讲解了.如果你想在不知不觉中感受面向对象编程到底是什么?建议去用用smallTalk或Java.这两种语言是完全运用面向对象思想的.
有很多高手都谈了在Delphi中运用面向对象技术来提升开发效率.我在这里想谈谈我运用面向对象编程的观念使用Delphi编写代码所带来的感受:
1.我不喜欢定义一大堆的变量:取而代之的是我定义一个类,把相关的变量定义为该类的私有变量,然后将使用这些变量的过程或函数也搬到类里去,将其变为类的方法.我发觉我这样做有很多好处,我不再需要定义一大堆的变量了,我只需要申明一个对象变量,在操作时我也不需要去小心处理这些变量之前的关系了,这些关系在类里实现了;如果在其它地方有类似的实现,我再也不用像以前那样复制代码了.
复制代码曾被我的一个同事作为法宝,但他的程序实在是太难以维护了,以致于连他自己也总在说要重写这些代码.
当然还可以将这些代码封装成通用函数,过一段时间之后你可能会发现你在一个公用单元里已经定义了成百上千个通用函数,你还记得他们吗?他们是怎么使用的?唉,要从成百上千个函数里找出自己想要的函数来而且还要确定他们就是想要的函数还不如干脆写一个算了.于是又多了一个通用函数.所以我有了以下的情绪:
2.我几乎不写通用函数,取而代之的是我将该函数放入到具体的类中去.如果你写的是一些通用性很强的函数,比如API的声明函数,好像没有办法去解决此类问题了吧.但我还是比较不喜欢,我只在公用单元里声明API函数,然后把该API函数引入到类中去,这样我就不用去看微软的那些看了后还是似懂非懂的文档了.
3.重构?在Delphi中怎么用?如果你遵循了上面的两个原则,过一段时间之后,你会发现,噫,这个类怎么这么大?(MM都喜欢大......)把他弄小些吧.再看看<重构--改善既有代码的设计>一书,上面好像有说怎么做的哦.当然,还有一些规则,你可以试着去做做.我比较喜欢重构,因为人的思想总是在前进嘛.从我用'一指禅'打出'a'到现在写这篇狗屁不通的文章,对于软件编程还是进步了很多.我相信很多人都还无法达到大师的水平,一出手就是高水平的(我特崇拜UNIX的创建者,在那时创建出来的操作系统到现在还称为是最先进/稳定的;虽然windows占据了绝大多数终端,目前也在向高端进展,但从一开始的架构思想来说,是无法与Unix相比的).所以如<重构>一书的作者所说:我无法一开始就做正确的,因为需求总在变化.所以我总可以对客户懒懒地说:你要做什么改动?说吧?超过20%一次收费XX元.嗯,XX元是不是太少了?那要看你的姿色了,我比较不自信,所以开价比较低.....
4.设计模式?我看了一遍<设计模式>,还不太懂,所以...还请看大师们的著作吧.
好像没有说到对象编程哦?哦,对,有点偏题了.我口渴了,喝口水再说吧.
Delphi其实已经将Pascal语言改造成了面向对象编程的ObjectPascal语言;看看VCL Framework的源代码,里面运用的是面向对象编程技术,仔细问读这些源代码,慢慢地你就会领悟到面向对象编程的好处,如果能更进一步,你还能举一返三,联想到业务领域。不管是二层还是三层,或者是多层。不管是现在的中间件编程,面向服务编程,面向构件编程,其实都要基于面向对象编程。面向对象编程是最基本的思想,就像人的行走一样。我无法想像不会走路的人是如何去跑、去跳的?不知道你能否想到?
其实我这个标题给得太大了,我只想谈谈自己对Delphi面向对象编程的一点感受。对于Delphi以及VCL Framework,我只能算作是入了门而己。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的老五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值