OO Software Development Principle
2023-09-01 09:17:16 0 举报
AI智能生成
OO Software Development Principle
作者其他创作
大纲/内容
面向对象
概念
面向对象分析
面向对象设计
面向对象编程
四大特性
封装(Encapsulation)
例子
目的
提高代码可读性,可维护性
提高易用性
抽象(Abstraction)
例子
目的
培养抽象思维,过滤非必要信息
关注功能点,而非实现
继承(Inheritance)
例子
目的
表示类之间的 is-a 关系, 反应真实世界中的这种关系
解决代码复用
设计结构美感
注意
尽量多用组合,少用继承
避免继承层次过深
修改父类可能会影响到子类
多态(polymorphism)
例子
继承 & 重写
接口类
duck-typing
目的
提高可扩展性与复用性
问题
滥用 getter / setter 方法
滥用全局变量和全局方法
定义数据和方法分离的类(基于贫血模型的开发模式)
设计原则
SOLID
单一职责原则(SRP)
类中的代码行数、函数或属性过多,影响代码可读性和可维护性
类依赖的其他类过多,或依赖类的其他类过多,不符合高内聚、低耦合的设计思想
比较难给类起合适名字,很难用一个业务名词概括,或者只能用一些笼统的 Manager、Context 之类的词语来命名,说明类职责定义不够清晰
私有方法过多,我们就要考虑能否将私有方法独立到新的类中,设置为 public 方法,供更多的类使用,从而提高代码的复用性
类中大量的方法都是集中操作类中的某几个属性,那就可以考虑将这几个属性和对应的方法拆分出来
为了满足单一职责原则,是不是把类拆得越细就越好呢?答案是否定的
开闭原则(OCP)
预留扩展点
代码的扩展性会跟可读性相冲突
里式替换原则(LSP)
关键点:design by contract -按照协议来设计
子类不能违背父类声明要实现的功能
子类不能违背父类对输入、输出、异常的约定
子类不能违背父类注释中所罗列的任何特殊说明
接口隔离原则(ISP)
若为一组接口的集合时,如果其中部分接口只被部分调用者使用,则需要将这部分接口隔离出来,供单独使用,不强迫调用者依赖用不到的接口
若为单个接口/函数时,如果部分调用者仅使用其中部分功能,则需将接口/函数拆分成更细粒度的多个接口/函数,供单独调用所需
若为OOP中的接口时,接口的设计要尽量单一,不要让接口的实现类和调用者,依赖不需要的接口函数
依赖反转原则(DIP)
控制反转(IOC)
依赖注入(DI)
依赖注入框架(DI Framework)
KISS
不要使用同事可能不懂的技术来实现代码
不要重复造轮子,善于使用已经有的工具类库
不要过度优化
YAGNI
不要过度设计
并不是说不需要考虑代码的扩展性
DRY
常见重复
实现逻辑重复
功能语义重复
执行流程重复
提高代码复用性(Code Reuseability)
减少代码耦合
满足单一职责原则
模块化
业务与非业务逻辑分离
通用代码下沉
继承、多态、抽象、封装
应用模板等设计模式
LOD
高内聚、松耦合
不该有直接依赖关系的类之间,不要有依赖
有依赖关系的类之间,尽量只依赖必要的接口
规范与重构
Subtopic
Subtopic
0 条评论
下一页