俺所尊敬的与月共舞老大的意见:论坛上有朋友发贴探讨阅读VCL的经验,我先回复一下,希望大家可以在邮件列表中讨论起来。分析VCL源代码也是有很多层面的,在不同的学习阶段看同样的代码也会有不同的体会,下面简单谈谈我的一些经验:1、一开始阅读VCL代码,最直观的感受是代码的规范性,VCL的代码是非常清晰、简洁、易读、高效的,几乎找不到一行多余的代码。虽然代码量大,注释少,但还是比较容易理解。阅读VCL代码,让我养成了不管写任何代码都要一丝不苟的习惯。2、代码实现的技巧和对VCL的深入理解。VCL的代码毕竟是最优秀的Delphi大师千锤百炼的成果,对程序语言本身的运用以及数据结构、算法设计等方面的实现,对我们都有着极大的参考价值。虽然有些代码一时不容易读懂,特别是涉及到其它领域知识的部分(如设计模式),不过多读多用就会慢慢理解。分析发VCL的实现机理,对我们在开发中编写有效的代码也非常有帮助,可以避免走弯路。3、整个VCL体系结构的设计思想。前面的阅读让我们“知其然”,再往后就是分析“其所以然”。为什么Borland的工程师要这样来设计VCL?VCL是怎样一步一步演化来的?如果是我来设计,我会怎样开发自己的组件库?如果有时间,也可以看看介绍VCL体系的书籍,如李维的《Inside VCL》等,带着自己思考的结果和疑问来看书,收获更大。4、知识和智慧源于思考,有了前面的经验和自己的想法就可以去行动,编写一些有趣的控件,加深对VCL组件的认识和理解。也可以写一些文章总结自己的思想,与其它人交流扩展自己的知识面等。写文章其实是非常有益的工作,即可锻练自己的文字表达能力,又可锻练内容组织和思维能力,还可与别人交流经验,一举多得,呵呵。也希望大家在 CnPack 邮件列表中能多多探讨! 周劲羽 2004-08-30
解决方案 »
- 多年没用D了,请问各位做报表控件放在那个标签里面,找不着呀(急)
- 关于ADOQuery循环查找并定位多条记录的问题
- 说一说,大家是用什么安装软件打包程序的?
- 怎么样删除.ocx的控件?
- 关于access数据库的连接..
- 如何让QReport报表中的QRDBText显示为0时,用空白代替?
- 请问哪里可以下到DELPHI6的简体中文版
- 哪有FOR DELPHI5,6的财务票据方面的控件下载?
- SQL Server Destop版不是用Socket通讯的吗?
- Hi!前度刘郎今又来,各位老朋友和新朋友,大家好,可惜立马又得走:(
- 关于Raize中TRzProgressBar控件BarColor属性的问题?在线等!
- 高分求助,请进来看看!!!
看Vcl好结合基础知识和以往开发的知识配合才会产生自己的想法。
说架构经验:
架构优势首先建立在大代码量上。小代码量的,建立架构的时间浪费了开发周期。其次是在企业级的重用开发上,在一个软件适用领域,不管怎么做项目,都脱不开这个领域的一些特征。总结一些特征,就发挥了FramWork的优势了。我现在做的工作也正是这个。前提是企业级的,需要讲项目成本,讲研发周期,项目制作周期的。个人软件或许不会这么重视。提高方法总结:架构的优势就是可扩展和可重用,在做小项目可重用可以不考虑。在这两条的前提下有两点必须。一、对以往项目的总结,就像老罗说的那些,10万代码量只说明一个时段的经验总结。没有一哪来二?或许以后把前面的代码完全摒弃,但是这些经验的总结会成为高效架构的一个大优势。总结自己的经验还远远不够,总结他人的会有更多想法提高。开源软件的用处很大。又要提一下我现在的工作,原来公司的那个架构已经不适用了,技术总监辞职了,现在我来担任基础架构的设计。总结他的一些想法,然后扩展我的想法也是我的经验。现在是个学习的好机会。:〉二、学习好的架构技术,我说的是诸如《设计模式》《敏捷软件开发》之类的经验总结书。设计模式这本书并不厚,但说的东西太多。然后是《重构》这样的书籍,尽管说到重构了,是弥补设计不足的时候,但是知道所不足,才能知道设计的时候怎么高效设计。但这些东西真正用得上,又得带着这些知识来开发。在我的感觉这时候真的是很痛苦,面对好东西不知用在什么地方。不过开发久了,自然而然就用得上了。使用delphi很幸运,可以看VCL的代码。作为一个非常成功的Framework,窥其九牛一毛就受益匪浅。总之:一个学习总结,再学习再总结的过程。读Vcl的经验:
真正理解Vcl还是靠Dreamtheater大哥的指点,尽管大哥对delphi用得很少,vcl也没有我看得多。但是一看就看到点子上。短短一年下来,他给我指的几个要点,让我以前的知识全部串联起来了。就这点,我很感激他。我的总结,了解一个框架,首先得了解它设计的意图,为什么要这么去设计。然后了解组成的机理。从基础开始。也就是说从根开始,可以说寻根溯源。经历:那时候我还在宁波,也就是去年这个时候。大哥首先说我,你不真正明白消息处理机制,你怎么理解vcl为什么要这么做?大哥又告诉我,你不了解TObject的机理,怎么真正了解Vcl?他甚至怀疑我没有看过vcl的代码。唉…… 我浮躁,囫囵吞枣,其实什么都不懂。感叹白用delphi五年。踏踏实实的用罗云彬的那本书,把消息机制再巩固一遍,作为基础,然后把TObject为什么这么建立。一个基础类是怎么建立的搞明之后。顺序把主干类的定义和技术细节看一遍,持久类TPersistent,然后看组件类TComponent代码,然后是控件类TControl,TWinControl,如何把复杂的消息分工使用。尽管对里面技术细节还不是很理解,但目的已经达到了。再编写控件就不浑浑噩噩的写了,因为我理解了vcl的封装机理。适时地Inside VCL这本书的出版。我很幸运哦。:〉谈论有关设计:
其实不管怎么设计,怎么编码。其实还是那句伟大的话:程序 = 算法 + 数据结构。比较好的设计就是把这二者协调的好的设计。所谓的过程化设计、模块化设计、对象化设计在我的实践中认为,这些东西只不过是不适合某些开发,违背了重复代码的大原则等等,应运而生的东西。老的汇编和老式的Basic一个大大的流程下来。随着代码量的增加,算法的增多,Dijkstra老先生在1968年提出了模块化设计。把技术细节提取出来。不要掺杂在一起。代码量继续增加,许多不同的数据加入进来,为了协调处理不同数据的各种算法,不知道谁提出了对象化设计。把处理同一种类型数据的模块,包括数据本身都看成一个对象。继续把技术细节提取出来。再怎么设计,只不过更好的改进数据和算法之间的关系,使之思路更清晰,更容易维护,更容易扩展。对方法的选择。也建立在这基础的基础——数据和算法上。举个设计模式的例子,设计模式中的策略和模板是两个看上去类似但目的截然相反的模式。而他们的区别就是在数据和算法上,策略模式是在数据源已定的情况下,算法不确定有多种可能的情况而使用的,派生类定义的不同的算法被称为不同的数据处理“策略”。模板模式与之相反就在各种算法是确定的,而数据源是不定的,而这些定义好的算法就是“模板”,数据源在派生种定义。设计之初就要把数据摆出来,看看需要的数据有哪些,然后根据具体情况定义合适数据结构,预计处理数据的算法摆出来。根据确定性,不确定性,扩展性等基本特性,然后做出相应的设计。这就是所谓Designer的工作了。算是自我总结吧。最后自己的总结,其实也是这一段时间的总结: 学习的一个很有意思的规律,基础知识掌握到了一定程度,仿佛看一些所谓的“高深”的理论和代码,都是水到渠成的事情。 VCL,设计之初就是为了windows设计的,而消息机制是里面的核心部分,从TObject就为这个作铺垫了,以次一步步建立起来。 看Vcl的代码,真正明白TObject的东西,就明白了Vcl一半了,核心是一定要掌握的。设计的源头一般是很难理解的,尽管简单。 其实Inside vcl也没有真正把TObject的机理介绍清楚。 了解意图,了解目的,了解手法。
另外,一个人的思维没法一直都连贯地跳跃,当你查看某个控件的机制的时候,可能子类不懂,看其父类,父类还不够懂,再跳到爷类(^_^,自创的词),这样即使具有超强的阅读理解能力,等到爷类或爷爷类的时候,也许早把前面读的初衷给忘记了。这样读只适合于“消遣”式的无目的的读,而不适合于抱着问题去寻求答案的方式。另外,VCL是Windows上的Framework,无论怎样封装,它最终还是可以和WindowsAPI和消息机制扯上钩,因此Windows的底层知识对VCL的基类等的了解具有莫大的帮助,如果不了解Windows机制,VCL的阅读寻源还只是浮沙上的别墅,总是不扎实的。
毕竟是喝牛奶长大的。
我对VCL的看法嘛,世界上总有人去深入研究VCL的,他们努力研究,他们得出成果,被其他人利用。他们的成果辅助了他人的开发,他们是伟大的,但并不是人人都是伟大的。没有必要人人都放弃原本可以从别人经验学来的东西,而自己研究,这样只会带来所有的开发过程极度缓慢,甚至会影响全球经济。在适当的情况下,借鉴别人的成果,只会对自己有利而无害,但自己有时间的时候,能利用空闲时间来自己充当这研究的先锋,给别人的工作开路带来方便也是不错的。
你是不是把庖丁解牛给忘了?庖丁对于他所解的牛了解不够深????生理特点,骨骼结构不了解?????
>>框架辅助开发,也算是工具。
工具是服务于人的,人应该了解它能更好的服务于人。
而不能迷信工具,花了太多时间在不应该花时间的事情上,人反而成了工具的奴隶,身体成了工具的躯体,灵魂却被工具所占据。把灵魂出卖给魔鬼获取更多的利益,不如交给上帝
-----------------------这些里面有几句是说Vcl的?上帝是VCL?魔鬼是VCL???_____________________例如传教士发扬上帝论,都好几个世纪,依然还是那么多人不相信上帝
___________这是VCL吗?相信不相信上帝是人们自己的事情,你去问问欧洲人,美国人,这个具备普遍意义吧,你去问问英国人有几个不信上帝的?圣经是所有欧美国家卖书卖的最多的!!!!!宣传是另一码事。
我不明白你学数学是为什么?你学数学是为了搞数论,数学研究,还是数学模型?你上学是为了什么?你上课是为了什么?你看书是为了什么?你写程序是为了什么?是的,大家都学,可是没有几个人是数学家,毕竟不是每个人都是专家。但是为什么要学?被强迫???生存欲望?我只不过举一些大家都知道的例子!人们较信服的例子!是的,上面周劲羽的例子你不看,你还说我狡辩!刘啸的例子你不看,说我狡辩!老罗的例子也是狡辩?cg1120、风炎、Ehom他们也是狡辩?