我们经常看到一个函数非常长,或者一个类非常臃肿,这是时候就可以用单一职责原则来判断重构。
单一职责原则,意思是一个类或者模块只负责完成一个功能。为何要单一职责原则,使用单一职责原则的类,在后续的维护中,可复用性、可读性都较好,更加高内聚低耦合。但是单一职责原则不能滥用,并不是说类拆的越细越好,有点时候拆分的过细,会影响代码的可读性,降低内聚性。
让我们以一个例子来说明一下:
class MailSender {
public void Subscribe();
public void SendByTCP();
public void SendByUDP();
}
简单来看,虽然这个类方法很少,但是Subscribe和Send并不是同一个职责,而且这个类的类名是MailSender,所以与它有关的是SendByTCP()和SendByUDP(),所以应该拆解为
class Subscriber {
public void Subscribe();
}
class MailSender {
public void SendByTCP();
public void SendByUDP();
}
现在根据职责,将方法拆成两类,分别放在不同的类中。
单一职责原则虽然比较简单,但是非常实用,我们经常看到很多新手代码,大段代码,或者代码超长,这个时候就应该考虑一下使用这个基本原则对函数、类、模块进行重构。
网友评论