欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

The Object Primer

程序员文章站 2022-03-29 21:21:12
...

The Object Primer
            
    
    博客分类: 术  

1,书名

被翻译成“面向对象软件开发教程”,若不是Scott Ambler名声在外,就要错过旧书摊上这本10几块的书了,虽然错过也没太大影响

2,UML vs. Programming Language

如果图形和文本基于同一种对象模型,则它们之间可以做到无缝转换;如各种可以存为XML文档的图元,XML文档和图元都基于XML Schema,任何一种表示都可以不损失任何信息的转化为另外一种表示;然而UML不和任何一种编程语言基于同一种对象模型,并且越细节,图形和代码之间的缝隙越大,由代码逆向工程得到的序列图几乎没有任何价值,因此减少这种缝隙的方法就是:
a,要么修改UML的元模型、语义,将其变为另外一种编程语言,并开发相应的编译器
b,要么将UML做为草图来用(UML as sketch),不要当作蓝图(UML as blueprint),因为在草图阶段,与编程语言的缝隙并不大

不知原文如何,有一小节标题被翻译成“一图胜千言”,这也说明了UML的用处:用在一张图可以概括很多代码的地方,图与代码一对一的情况下,图基本上是没有用处的,至少目前如此;其实Scott Ambler对MDA基本持保留意见,与与他观点类似的还有Martin Fowler

3,软件与硬件

有一小节举了硬件生产中芯片和主板的例子,以此说明面向对象软件应有的可扩展性和可复用性,通常拿硬件来隐喻软件也大抵如此了,可硬件能带来的隐喻还不止如此,芯片和主板都不知道自己被组装到一起的过程,这一组装过程也是可复用的,可扩展的,隐喻到软件就是程序中没有显式的创建芯片和主板并将它们关联在一起的代码,而是IoC;牵强了点,暂且如此吧

4,用例与用例图

Scott说:“绘制用例图是容易的,但确定用例和参与者却是困难的部分”;可有多少人拿着鸡毛当令箭,拿着用例图当用例,建议以后书里面都不要讲用例图,只讲用例,顶多在附录里图示一下

5,扩展点

用例的扩展点实在是AOP的pointcut的始祖,这个结论已经被接受了,Ivar Jacobson关于用例扩展点的论文甚至被AOP专家认为是AOP早期论文

6,UML风格

作者在《UML风格》中提到的一些条款在本书也提到了,呵呵,一本顶两本

7,不需要编码的原型

想验证一下需求?做个原型吧!不想编码?那就扮演吧!上过外教的课,又唱又跳,不拿自己当外人,这方面国人是差点,不知有没有开发团队真的通过类似角色扮演的方法收集,验证需求等;相同的是管理层都不太接受这种方法,这是保守与*,统治与被统治间的矛盾,内外皆然

8,信息隐藏,数据隐藏

实在是“实现隐藏”更能表达本质的概念

9,耦合

仅仅简单的说“松耦合”已不代表任何意义了,现在要区分“侵入”与“非侵入”

10,组件

Scott Ambler:组件是模块化的、封装良好的单元,组件可以单独部署
Ralph Johnson:Components are not a technology. Technology people seem to find this hard to understand. Components are about how customers want to relate to software. They want to be able to buy their software a piece at a time, and to be able to upgrade it just like they can upgrade their stereo. They want new pieces to work seamlessly with their old pieces, and to be able to upgrade on their own schedule, not the manufacturer's schedule. They want to be able to mix and match pieces from various manufacturers. This is a very reasonable requirement. It is just hard to satisfy.

11,分析

需求决定请求构建的内容,分析决定将要构建的内容

12,UI

我更倾向称之为“用户交互层”,“用户接口层”,而不是“用户界面层”,因为界面让人联想到屏幕,图形,窗口等,可UI还包括命令行,语音等,拨IP电话卡时,一步步引导你的就是UI层,可是没有屏幕,图形,窗口

13,Java风格

作者在《Java风格》中提到的一些条款在本书也提到了,呵呵,一本顶三本了

14,ctor与setter

Scott说尽量使用setter设置属性,在ctor中传参设置属性是不好的做法,可是,ctor的作用就是保证对象在使用前处于良好的状态,如果某个比较重要的属性在对象被使用前必须设置,那么最好在ctor中传参设置

15,源代码

Scott说源代码包括编程语言的源代码和SQL脚本,现在要加上各种配置文件了,它们就是各种容器的“源代码”

16,迭代与增量

我见过的大多打着迭代旗号的项目其实是增量开发,委实是“增量”这个术语应该比“迭代”更流行,就算每个增量开发项目也都是迭代的,但准确的表达会潜移默化的影响着人们的思想

17,入门

《The Object Primer SE》+《Uml Distilled 3rd Edition》+《The Java Programming Language 3rd Edition》目前为止较好的面向对象编程入门读物,只需两个月的时间.