无辜的RAD(RAD是让你去创造和使用可复用的组件,不是让程序员“变白痴”)good
无辜的RAD
2005-3-21
说实话,RAD很无辜。从出生的那天其就被骂,天天被指着鼻子说“不就是拖个控件嘛”,就好像当年说学电脑“不就是插个鼠标嘛”。也怪程序员大都天性犯贱,就爱一遍又一便的写基础代码库,什么字符串类啦、智能指针啦、动态集合啦,能写的都自己写一遍,要是用现成的啊,你都不好意思跟人说。天天重复重复再重复地做着重复重复再重复的事情,还以为自己做着多么伟大的事情,直到哪天一位民工叔叔拍拍他的肩膀说道:“省省吧,我们早就不用砖头盖大楼哩!”
复用性是软件开发的核心之一,从函数到类,到组件,到中间件,复用的规模逐渐加大。RAD的核心就是复用。至于控件,其实就是可视组件。
1. 函数是最早,也是最简单的复用单元,代表语言C。你一定认为我重复这个old的基本概念是在浪费带宽,那么为数不少的程序员仍然在写超过1000行的单个函数,是不是该把他们拖出去斩了?
2. 类随着面向对象概念而出现,作为包含一组操作函数和数据的复用单元,代表语言C++,经过当年MFC若干年的努力,终于广为接受。而随着现在Unix的复兴,反对派也有了一定声强。原因很简单,连设计可复用的函数都有很多人做不到,更别说类了。很多人只是把所有要用的函数堆到一个类里,结果还不如不用。
3. 组件随RAD概念而出现,作为包含共同完成一项功能的一组类的复用单元。代表语言Delphi,到不是说Delphi提供了多少组件,而是它提供了一种方便的实现组件的方式,开发人员利用这种方式创造的大量的良好可复用组件。Borland的组件化设计同样造就了JavaBean,也延伸到dotNet。如果有人还不明白,简单的说就是:RAD是让你去创造和使用可复用的组件,不是让程序员“变白痴”。
4. 中间件就是半成品,是比组件更大的复用单元,而且不再强调用什么方式实现,不强调使用什么样的接口。在这种规模下,一般开发工作与设计工作已经分离由不同的专职人员完成。
比起函数和类,组件和中间件都更为抽象,不拘泥于某种实现形式,而且由于问题规模更大,往往要伴随相关文档来构成一个完整的整体。这些方式没有哪种是最好的,使用哪种方式完全取决于需求和问题规模。
不少RAD反对者认为使用组件就远离了底层,就好像把厕所改叫盥洗室就有人找不到大号,无非都是些函数和类,和底层不底层有什么关系。其实只不过是VB不支持指针,所以VB的组件大都只提供高级接口,就被以偏概全。还有反对者认为用封装好的东西就不能了解底层,非要自己写一遍才行,就好比要重新证明力学三定律。如果是为了专研学习确实精神可嘉,如果是做工作就是神经。枉费了文档和源码还都理解不了底层,还要在这点问题上浪费生命。于是,有人用for(int *p = src, *q = dst, *e = src + count; p < e; *q = *p, p++, q++);重写memcpy,还自诩比系统的快,我@#$%^&*。人家XBox的广告说得好,“人生苦短,及时行乐”,何不把时间花在赚钱的事情上。
当然,C的领地内是不提组件的,因为广为接受的组件的概念是基于类的。正如OO传道者说的,OO只是一种概念,如果说能够做OO设计的语言都是面对对象的语言的话,C也是面对对象的,Ada也是。同样,组件也是一种概念,它只是一个独立可复用的模块,由于C的纯粹性,在C里实现这样一个东西比在C++里容易。C++上很难发展组件的原因是,可复用的组件必须有易于模块对接的接口,而C++偏偏没有统一的基础库,就连个字符串都每个类库一套实现。组件又是相对高层的结构,只得依附某一代码框架,也就只能在同一框架下复用,也就大大限制了组件的发展。也由此催生了COM,作为和语言框架无关的接口。可惜COM认的老大是VB,C++要是想和COM打个照面啊,那个难啊。
总的来说,很多人还处在旧PC时代,那时候一个人就能写出个WPS,一个人就能写出个CCDOS,而现在这些只能是唐吉诃德的美梦。手机软件的兴起让很多人重温了一下旧梦,不过最终还是要回到现实。
http://blog.csdn.net/nightmare/article/details/353337
无辜的RAD(RAD是让你去创造和使用可复用的组件,不是让程序员“变白痴”)good的更多相关文章
- 使用jieba分析小说太古神王中,男主更爱谁?去文章中找答案吧!#华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波
注:这并不是一篇技术文章,而是记录了我这几个月经历的入职,裸辞,找工作的心路历程,简单介绍一个博主的情况,我是16年毕业生,校招进了一家北京的公司,java开发,和很多年轻人一样,干了一段时间,我发现 ...
- Python程序员去上海工作有多难?
我只能说,也要看你掌握的技术可以打多少分.技术熟练度跟找工作的难易程度是成正比的:你掌握得越好,找工作就越容易(难度系数越低):反之越高. Python程序员这种技术类的工作岗位,当然还是要有扎实的技 ...
- Java程序员都应该去使用一下这款强大的国产工具类库
这不是标题党,今天给大家推荐一个很棒的国产工具类库:Hutool.可能有很多朋友已经知道这个类库了,甚至在已经在使用了,如果你还没有使用过,那不妨去尝试一下,我们项目组目前也在用这个.这篇文章来简单介 ...
- 一个四五年的Java开发程序员,该准备哪些去面试?
上周面试了一周,感触颇深,总结一下. 面试了公司大概有阿里,携程,爱奇艺,唯品会,途牛,bilibili,大众点评,阿里和爱奇艺是电话面试,其他现场面试. 首先,五年左右,应该算高级开发工程师,大部分 ...
- 放弃了程序员互联网高薪,跑去事业单位做IT的尴尬
“你是程序员对吧?”“是啊,怎么了?”“那你帮我修一下电脑吧.”我原来也是一个重点大学毕业,基本上事业里面搞IT就干这些事情,要是以前,我肯定会想,我是程序员和修电脑有啥关系. 但是自从进了事业单位, ...
- 去摆摊吧,落魄的Java程序员
真的,我也打算去摆摊,宣传语我都想好了.沉默王二,一枚有颜值却靠才华苟且的程序员,<Web 全栈开发进阶之路>作者,CSDN 明星博主,周排名第 4,总排名 40,这数据在众多互联网大咖面 ...
- 大厂程序员因厌恶编程,辞去月薪2w+的工作去当司机?
世界好小啊,刚在一个 UP 主的群里看到一个视频,标题叫做:"失业了工作没找到,却稀里糊涂上了知乎热搜,2000 多万人围观,我--" 说实话,看到视频的封面,我的下巴当时就掉到了 ...
- 程序员肺被切掉一块还得去加班... 再谈“工作996,生病ICU”
如题,为什么要说再谈“工作996,生病ICU”,因为996问题早已不是一个新问题,在我最近刚出版的新书<SOD框架“企业级”应用数据架构实战>写作期间,爆发了一次程序员“起义”,出现了一个 ...
随机推荐
- Risk Adaptive Information Flow Based Access Control
Systems and methods are provided to manage risk associated with access to information within a given ...
- poj1639 Picnic Planning,K度限制生成树
题意: 矮人虽小却喜欢乘坐巨大的轿车,车大到能够装下不管多少矮人.某天,N(N≤20)个矮人打算到野外聚餐.为了集中到聚餐地点,矮人A 要么开车到矮人B 家中,留下自己的轿车在矮人B 家,然后乘坐B ...
- 反编译Jar包
Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...
- ADO.NET- 中批量添加数据的几种实现方法比较
在.Net中经常会遇到批量添加数据,如将Excel中的数据导入数据库,直接在DataGridView控件中添加数据再保存到数据库等等. 方法一:一条一条循环添加 通常我们的第一反应是采用for或for ...
- 链接hdf5库出现错误的解决办法
作者:朱金灿 来源:http://blog.csdn.net/clever101 在链接hdf5库出现一些链接错误: error LNK2001: 无法解析的外部符号 _H5T_NATIVE_DOUB ...
- 字符串、对象、数组操作方法、json方法
1.字符串操作方法 1.charAt * 作用 * 通过索引找字符 ...
- CUDA多个流的使用
CUDA中使用多个流并行执行数据复制和核函数运算可以进一步提高计算性能.以下程序使用2个流执行运算: #include "cuda_runtime.h" #include < ...
- 停止学习Wireshark
下载和安装好Wireshark之后,启动Wireshark而且在接口列表中选择接口名,然后開始在此接口上抓包.比如.假设想要在无线网络上抓取流量,点击无线接口.点击Capture Options能够配 ...
- c语言学习笔记(13)——链表
链表 算法: 1.通俗定义: 解题的方法和步骤 2.狭义定义: 对存储数据的操作 3.广义定义: 广义的算法也叫泛型 无论数据是如何存储的,对数据的操作都是一样的 我们至少可以通过两种结构来存储数据 ...
- windown下linux子系统的安装和卸载
原文:windown下linux子系统的安装和卸载 安装 第一步 打开开发人员模式 第二步 勾选适用linux的window子系统 第三步 打开powershell 第四步 在PowerShe ...