多年前留下来的,但不记得从哪位大神的blog里拷贝下来的,暂记于此。
1、认识到本质,才能让你的程序具备更大的灵活性和扩展性。在软件开发中,抽象能力体现为对问题域的理解能力,对领域模型的抽象。合理的抽象也是代码重构的前提,每一次重构,都是向更好的抽象迈进了一步。这是一个优秀高级程序员所应该具备的能力。
2、提高抽象思维的能力就是提高抽取不同事物的共性的能力,不同的事物不仅仅是包括现实中具体的事物。引入到编程语言里:抽象类是一类事物的高度聚合,而接口是定义行为规范。聚合(抽象abstract)<——>分解(接口interface)。
3、程序员的技术能力模型
“编程语言30% +抽象能力(数据结构50% + 对现实事实的抽象理解能力10% + 设计模式能力10%)70% = 100%。”
4、数据结构能力(逻辑能力)则具体体现在代码的实现上:高质量的代码需要很强的逻辑性,逻辑严谨,Bug就少;在一些对代码执行效率要求严格的应用上,好的算法实现更需要好的数据抽象能力,数据结构就是对数据逻辑的一种抽象。
5、单一职责(SRP)原则就是一个类应该仅有一个引起它变化的原因。你不希望因为电脑内存损坏而更换CPU吧,同样也不应该让一个类有多种修改的理由。
6、开放封闭(OCP)原则就是类模块,对扩展开放,对更改封闭。你一定不希望电脑只有一个内存槽,加内存就要换主板吧,程序也应该能在不修改原先程序的情况下就能扩展功能。
7、里氏替换(LSP)原则就是任何基类可以出现的地方,子类也可以出现。如果你买的DX10显卡不支持DX10特性,那么这个显卡一定没法用。如果父类的方法在子类中没有实现那就晕了。在程序的世界中千万别认为是鸟都会飞,先考虑清楚将会有哪些鸟吧。
8、依赖倒置(DIP)原则就是要依赖抽象,而不要依赖具体的高层模块,也不应该依赖于底层模 块,二者都应该依赖抽象。抽象不应该依赖于实现细节,实现细节应该依赖于抽象。针对接口编程,这样即使实现有变也不需要修改外部代码。其实,现在电脑的硬 件、网络通信等都符合这个原则,比如USB接口、内存接口(SIMM、DIMM和RIMM等)、显卡接口(PCI、AGP、PCI Express等)、TCP/IP。
9、接口隔离(ISP)原则就是不应该强迫客户程序依赖于它们不用的方法。花3000元买一个带 拍照、听MP3功能的手机还是花1000元买一个手机、1000元买一个MP5、1000元买一个数码相机呢?买了前者的话手机动不动就要修,而且还不一 定是因为不能打电话而修,买了后面三样的话,即使修也不影响其他设备使用,你说买哪个?
10、总结与提升
抽象类是一类事物的高度聚合,而接口是定义行为规范。聚合(抽象abstract)<——>分解(接口interface)。
11、程序员的技术能力模型:
编程语言30% +抽象能力(数据结构50% + 对现实事实的抽象理解能力10% + 设计模式能力10%)70% = 100%。
每个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动,核心是提供了相关问题的解决方案。