JavaScript的一些设计原则

1. 单一职责原则(SRP)

单一职责原则通常指,一个类只有一种功能。但是JavaScript是一门面向对象的语言,没有类的概念,所以单一职责在JavaScript中的含义是:一个对象(方法)只有一种功能

 

那么为什么需要单一职责原则呢?

是因为不同功能的代码耦合在一起容易造成混乱,维护起来十分困难,而且不利于单元化测试。将不同职责的代码分离开来,有利于我们定位代码位置,一旦需要修改代码可以一目了然,提高可读性。

 

当然,单一职责原则也有一些缺点,比如代码会被分得更加细粒度,相互之间的联系也就更加频繁,如果处理不好对象之间的联系,容易违背后面要介绍的 最少知识原则。

 

单一职责原则要把握好代码分离的度,一些随着需求变化会一起变化的代码有时候可以不分离,比如xhr请求中建立和发送的操作。

 

2. 最少知识原则(LKP)

最少知识原则是指一个实体应该尽量少地和其他实体发生相互作用,其中实体包括的范围很广,包括:对象、函数、模块、变量等。

 

那么为什么要有最少知识原则?

这是因为如果实体之间的相互作用很多,那么当其中一个实体发生改动的时候,就会影响其他的实体,牵一发而动全身。

 

一般来说,实现最少知识原则,我们可以从以下几步入手:

 

(1) 减少对象之间的联系

尽量采用第三者对象来作为这些对象联系的媒介,同时在单一职责原则下,不能把代码粒度分得太细,要把握有度。

 

(2) 多采用封装的方式

封装能够建立变量的独立作用域,使得封装的变量与外界没有相互作用,而只暴露一些必要的方法(或者说API)给外界调用,将有可能相互作用的部分大大缩小。

 

3. 开放-封闭原则(OCP)

大多数时候,当一个程序有良好的设计,往往说明它是符合开放-封闭原则的

 

开放封闭原则是指对扩展开放,对修改封闭。它的意思是,当我们需要增加需求的时候,我们可以考虑增加代码而不是修改代码。

 

那么为什么需要开放封闭原则呢?

那是因为我们的代码都会跟着需求进行改动,用了开放封闭原则提高了程序灵活扩展的能力。

 

通常当我们代码里存在条件分支时,我们可以考虑用多态来改写它。比如:、

function makeSound(obj) {
    if (obj instanceof Duck) {
        console.log("gagaga");
    } else if (obj instanceof Chicken) {
        console.log("gegege");
    }
}

function Duck() {
    //...
}

function Chicken() {
    //...
}

var a = new Duck();
var b = new Chicken();
makeSound(a);
makeSound(b);

 

如果是这一种情况,那么当我们再增加一种狗叫声的时候,又要再加上 else if分支语句,我们可以考虑用多态来改写代码:

function makeSound(obj) {
    obj.sound();
}

function Duck() {
    this.sound = function() {
        console.log('gagaga');
    }
}

function Chicken() {
    this.sound = function() {
        console.log('gegege');
    }
}

var a = new Duck();
makeSound(a);

这样当我们增加狗叫声的时候,不用修改原有代码,只要再增加一个function Dog()就可以了

这样就符合开放-封闭的原则了

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值