设计原则-类似内功口诀

导读:经典的设计原则包括SOLID、KISS、YAGNI、DRY、LOD 等。设计原则是前人coding过程中总结的精华,遵从这些原则后,写出来的东西不会太差。带着这么原则去反复思考反复coding,你也可以早点下班或者授人以渔。

首先,SOLID 原则

SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:**单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则。**SOLID依次对应各个原则的英文首字母。

单一职责原则(SRP, Single Responsibility Principle)

它的英文描述是:

A class or module should have a single reponsibility。
一个类或者模块只负责完成一个职责。

开闭原则(OCP,Open Closed Principle)

它的英文描述是:

software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification。软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”。

里式替换原则(LSP,Liskov Substitution Principle)

它的英文描述是:

Functions that use pointers of references to base classes must be able to use objects of derived classes without knowing it。
子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。

接口隔离原则(ISP,Interface Segregation Principle)

它的英文描述是:

Clients should not be forced to depend upon interfaces that they do not use。
客户端不应该被强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。

依赖反转原则(DIP,Dependency Inversion Principle)

它的英文描述是:

High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. In addition, abstractions shouldn’t depend on details. Details depend on abstractions.
高层模块(high-level modules)不要依赖低层模块(low-level)。高层模块和低层模块应该通过抽象(abstractions)来互相依赖。除此之外,抽象(abstractions)不要依赖具体实现细节(details),具体实现细节(details)依赖抽象(abstractions)。

KISS 原则

它的英文描述是:

Keep It Simple and Straightforward.
尽量保持简单和直白

代码的可读性和可维护性是衡量代码质量非常重要的两个标准。而 KISS 原则就是保持代码可读和可维护的重要手段。

YAGNI 原则

它的英文描述是:

You Ain’t Gonna Need It。
你不会需要它。

当用在软件开发中的时候,它的意思是:不要去设计当前用不到的功能;不要去编写当前用不到的代码。

实际上,这条原则的核心思想就是:不要做过度设计。

DRY 原则

它的英文描述是:

Don’t Repeat Yourself。
不要重复自己。

将它应用在编程中,可以理解为:不要写重复的代码。三种典型的代码重复情况,它们分别是:实现逻辑重复、功能语义重复和代码执行重复。

迪米特法则

The Least Knowledge Principle。
最小知识原则。

利用这个原则,能够帮我们实现代码的“高内聚、松耦合”。

所谓高内聚,就是指相近的功能应该放到同一个类中,不相近的功能不要放到同一个类中。相近的功能往往会被同时修改,放到同一个类中,修改会比较集中,代码容易维护。

所谓松耦合是说,在代码中,类与类之间的依赖关系简单清晰。即使两个类有依赖关系,一个类的代码改动不会或者很少导致依赖类的代码改动。

总结:
大多数原则在任何场景下是适用的,原则之间也是互通互补的。但不要做过度设计,留点时间找个女朋友不好吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值