前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

读Delphi面向对象编程思想一

qiguaw 2025-03-04 13:41:01 资源文章 19 ℃ 0 评论

聪明的程序员用Delphi,真正的程序员用C++

很老套的一个开场白,这句话我也看到过无数次,那么真正聪明的程序员用啥?记得在一本书里面看到过一个解释个人感觉很合适,真正聪明的程序员用C++的思想用Delphi

本来今天公司安排的是年终述职,早上走的急悲催的忘了带电脑,还好从公司临时借了一台,结果试用期内我不需要述职,而更悲催的是坐班的办公室居然没网,没网也就意味着我要无所事事了,嗯,在公司即便是真的无所事事也要装作很忙的样子,万幸我带了U盘,而更幸运的是我U盘里面放着几本电子书

刘艺老师的【Delphi面向对象编程思想】机械工业出版社的版本,成书的时间很早了,但是里面的干货很多,放在今天依然没有过时,这本书很早之前我就收藏了,对于我这种看书看到前言和目录的耐心的人来说,今天难能可贵的是居然快看完了,而这本书从前言开始对我的吸引力就很大,一段关于器和术的论述,而今天我要和大家聊是Delphi的分离也有人称为分层开发或者模块化开发,之所以聊这个也是对这本书中提到一些观点的理解,如果大家有兴趣真的推荐多看几遍

可能是由于做Java开发的时间长了,所以我在学习Delphi的时候总有代入感,其实我一直有几个个疑惑的地方。

  • 虽然我没有参与过这种C/S结构的大型项目的研发,但是参考一些我们常用的软件比如QQ、360等等软件他们的组成很明显不是只有一个exe文件,Delphi的完整项目开发应该是什么样的软件结构
  • 一个很小的软件,我们在写代码的时候应该怎么样去归类我们的代码才是更为合理的,Java有一个包(package)的概念类似于命名空间,利用这个概念我们将整个项目划分为数据层(持久层)、业务层、表现层,而Delphi虽然也有包但是貌似此包非彼包,我还没有彻底搞明白Delphi中包到底有什么用途,唯一的理解类似于C语言中的静态链接库,和我印象中Java包的功能在Delphi唯一能够对应起来的貌似只有单元,仅仅是个人理解,有错误的地方希望各位看官指正

一个软件的构成应该是有物理分离和逻辑分离,所谓的物理分离类似一个exe文件配合多个dll文件,逻辑分离是指在一个exe或者dll中应该做到功能和职责分工明确,不能将所有的代码堆到一起,那么带来几个问题

为什么要进行模块化或者前后端分离式的开发

原因很简单为了让我们的代码变的后期维护、扩展更为便捷,之前有朋友就问过我,不使用类和对象这些概念我也能完成的功能啊,为啥还用,我的理由是一旦我们使用类的概念之后软件的整体结构就会变得更为清晰,尤其是大型软件,试想如果只是写一个很小的功能点,那你完全可以把所有的代码混在一起

但是当代码量上去了,比如1W。。10W行的时候,你的软件代码会变得自己都难以读懂更不要说维护了,尤其后期进行功能扩展来说完全是一场灾难,当然了模块化或者说使用类还可以提高我们的代码复用性,反之你的代码中会充斥着大量的重复代码,当然了也不是说所有的都是这么玩,比如我们只写一个两数相加的功能性软件,这样去设计就有点蛋疼了,那么这个度怎么去界定,需要我们在代码开始编写前进行设计

如何实现分离,分离之后模块之间如何通讯

先说单个工程项目,其实以前程序员也努力将程序分解成模块,并通过函数来彼此调用,但是彼此通信一直是个头疼的问题。而对象在逻辑上就是离散的、封装良好的功能模块,所以无论是实现分离还是彼此通信都会很容易,例如,以前我们在DLL中只能导出函数列表,但是有了类有了对象,我们完全可以在一个DLL项目中封装一个类,借助接口或者抽象类的方式实现对象的导出

再说一个项目由多个工程组成,最近几年Web应用大行其道,高并发、高可用、高性能更成为软件设计时候的基础标志,随之衍生出来的技术或者说软件项目的整体架构如分布式、微服务等等形式也在成为主流,虽然Delphi在国内市场不再辉煌,那它能不能这样去设计呢?很明显答案是肯定的,不过这是另外一个领域或者说层次的问题不在我们今天的讨论之内

实现分离的话会不会让我们放弃所见即所得的组件化开发

这个问题比较有代表性,群里面的淡淡的风做的教程就是主攻的组件化开发,之前南烛南总也是这样和我说的,教程的好坏暂且不论。RAD(快速应用开发)本身并没有错,问题是编程不能只依赖于RAD。Delphi专家 Marco Cantu 说过 "Choosing object-oriented programming means leaving some visual parogramming practices behind you",这句话的意思:选择面向对象编程意味着将一些可视化的编程实践抛在脑后(英文不好,用的百度翻译)!这意味着我们需要在RAD和面向对象编程之间找一个平衡点,以面向对象的思维方式来利用RAD。因为Delphi并不是C++

实现分离会不会写很多代码

这个问题我觉得是信心问题。如果我们注意学习新技术、新方法,实际上很多看似很难的东西并不可怕

今天暂时先说到这里,写在一起会让文章变的特别长,所以下一篇文章我们再说说在Delphi中到底如何实现模块化编程

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表