在阅读《敏捷软件开发:原则、模式与实践》时的思考得出了下面两个问题的答案:
- 什么样的程序是好的程序?
- 遵循怎样的原则才能写出这样的程序?
一、什么是好的程序?
实现业务功能是必须的,除此之外要可复用、可扩展、够灵活、可维护。这些特性要实现就要求程序要尽量简单。
因为,无论维护还是扩展都建立在后续的程序员能够良好的阅读了解程序的基础上。人的记忆和思维能力是有限的,而软件的复杂性远远超出了人的能力。好的程序要降低程序的复杂性,解决的办法就是分而化之,分层,分模块,将大的程序分为小的独立模块,将高层抽象和低层实现分开,减少硬性依赖,将易变逻辑和不变的逻辑分开。高内聚,低耦合。
二、编写好的程序的原则?
1.单一职责原则。
对于一个类而言应该仅仅有一个引起它变化的原因。多个职责会造成无关的耦合进而导致脆弱的设计。该原则可以提高内聚性和可重用性。
2.开放封闭原则。
软体实体应该是可以扩展的,但是不可修改的。
对扩展是开放的,可以改变模块的功能;
对修改是关闭的,不必修改源代码或二进制代码;
该原则实现的关键在于对频繁变化或可能进行拓展的部分进行抽象。
该原则可以利用继承和多态来达到不修改原有代码,仅仅通过增加子类实现就扩展功能的效果。使程序易扩展。
3.依赖倒置原则(相关的还有稳定依赖,无环依赖原则)
描述
高层模块不应该依赖于低层模块。二者都应该依赖于抽象。
抽象不应该依赖于细节。细节应该依赖于抽象。
依赖应该向稳定的方向进行,不能循环依赖形成依赖环。
规则
任何变量都不应该持有一个指向具体类的指针或者引用
任何类都不应该从具体类派生
任何方法都不应该覆写它的任何基类中的已经实现了的方法
该原则可以提高程序(依赖)的稳定性。
工厂模式