读《冒号课堂》

前几天看了一本根据博客整理成的技术读物----《冒号课堂》,它采用一种对话体的形式,文中使用“冒号”,“问号”,“引号”,“句号”,“逗号”这几个个性鲜明的虚拟角色,以问答的形式把编程范式和OO编程向我们娓娓道来。

该书分为上下两个部分,上部分讲常用的编程范式,主要涉及命令式、过程式、逻辑式、函数式、OO式、泛型式、事件驱动式、面向方面式等等。这些编程范式都有相应的一些编程语言作为支撑,文中主要讲了C/C++,JAVA,C#这几种语言的编程范式,同时对一些网上经常争论“哪种语言好?到底该学什么语言?”等问题做了细致的回答。编程语言无所谓好坏,具体看它应用的范围和情境。每种编程范式都有各自的优缺点,有它兴起和消亡的原因,不能一概而论。编程的时候,要注意把握抽象和接口。计算机程序的发展从机器语言、汇编语言到高级语言,再到动态语言,是一步一步抽象的结果。我们写过程,写类,写组件,都要保持抽象。高层不能依赖底层,反过来底层也不要依赖高层,都应该依赖抽象。因为抽象的东西比较稳定,一般是系统的接口。而我们熟知的封装、继承、多态等面向对象特性都是抽象的产物。至于每种编程范式,还有其社区长期以来的最佳实践和惯用法,这些东西对于我们解决特定的问题才有帮助。死抠语法细节,记住在量API函数是最要不得的。人的大脑容量有限,记不了这么多。我们常说“程序=数据结构+算法”,没错,但是现在的软件开发讲究效率,重实效。现有的高级语言把一些数据结构和算法都封装好了,我们只需要去正确地调用就行了。但是一定要阅读API文档。使用函数的时候,要注意它的前置条件、后置条件、异常情况等,如果不是出于深入学习的需要,最好不要读源代码。因为源代码可能在不久的将来改变,但是接口却不会改变。

下部分主要以面向对象编程为例,讲了面向对象的一些主要特性,如封装,即信息隐藏。封装不仅仅是把数据全写成private,然后方法全写成public。而应该站在这个类的创建者的角度考虑,哪里功能它需要提供给用户,那么就该public,一些实现细节则要private。继承的时候最好使用接口继承而不是实现继承,不要仅仅为了重要另一个类中的代码就去继承,那样容易产生紧耦合的代码。继承的目的是为了实现多态,接口继承正好可以满足这个目的。根据里氏替换原则,任何父类出现的地方,都可以用它的一个子类来覆盖。一个类同时具有个人身份(封装),家庭身份(继承)和社会身份(多态)。采用面向对象设计的时候,要遵循一些基本的原则。比如单一职责原则(SRP),接口隔离原则(ISP),依赖倒转原则(DIP),开闭原则(OCP) ,里氏替换原则(LSP)。再设计类的时候可以采用CRC卡,这个卡片上记录类名,职责,以及和它一些协作完成功能的类。

GRASP通用职责分配原则也是一种非常好的设计系统的原则,它包括:

1,信息专家(Information expert)
2,创建者(Creator) 
3,高内聚(High Cohesion)
4,低耦合(Low coupling)
5,控制器(Controller)
6,多态性(Polymorphism)
7,纯虚构(Pure Fabrication)
8,间接性(Indirection)
9,变化预防(Protected Variations)

最后本书以GOF的23个设计模式做了收尾。分别从创建型、结构型和行为型模式,讲解了设计模式中的面向对象设计原则的体现和运用。

感想:设计就是抽象,要抓住变化,封装变化,管理系统边界,在不断发展中完善设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值