常常看到一些大佬说,写代码不要写一堆if
else
嵌套,不要一个方法写上百行,这样不优雅,那么什么样的代码是优雅的代码呢?
那么评估代码是否优雅的具体标准是什么呢,前辈们总结了这样7种原则,越符合这些原则,代码的可维护性,复用性就越好。
单一职责原则:一个类只负责一个功能领域中的相应职责,就一个类而言,应该只有一个引起它变化的原因。
在程序中一个类承担的职责越多,它被复用的可能性就越小,如果一个类职责过多,那么一个职责的变化会影响其他职责。因此将不同职责封装在不同类中,更符合高内聚,低耦合的要求。
开闭原则: 程序应该对扩展开放,对修改关闭。
这个很容易理解,在实际开发中修改原有代码可能会造成程序中其他问题,如果对程序的改动只需扩展而不是改动原来的代码,无疑这样的代码可维护性会高很多。
里氏代换原则: 所有引用父类对象的地方能够透明地使用其子类的对象。
在软件中将一个父类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象的话,那么它不一定能够使用父类对象。我们常常听到“要面向抽象编程”,就是这个道理,父类比子类更加抽象,我们的子类是对父类的扩展,它是可替换的,而不是改动父类代码。
依赖倒转原则: 抽象不应该依赖于细节,细节应该依赖于抽象
开闭原则是程序设计的的目标,依赖倒转是实现开闭原则的方式之一,在引入抽象层后,系统将具有很好的灵活性,在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中,这样一来,如果系统行为发生变化,只需要对抽象层进行扩展,并修改配置文件,而无须修改原有系统的源代码,在不修改的情况下来扩展系统的功能,满足开闭原则的要求。为了确保该原则的应用,一个具体类应当只实现接口或抽象类中声明过的方法,而不要给出多余的方法,否则将无法调用到在子类中增加的新方法。
接口隔离原则: 使用多个专门的接口,而不使用单一的总接口
这个与单一职责原则类似,提供隔离的单一功能接口,可以让客户端自由组合,而接口职责过大会造成使用不便。
合成复用原则: 尽量使用对象组合,而不是继承来达到复用的目的
可以通过两种方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承,但首先应该考虑使用组合/聚合,组合/聚合可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少;其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用。
迪米特法则: 一个软件实体应当尽可能少地与其他实体发生相互作用
类之间的交互会增加系统的复杂度,类与类之间的交互复杂度越低,耦合性越低,通常在系统中可以通过引入第三方类来降低耦合度。
原文:https://www.cnblogs.com/barneycs/p/13284372.html