1.里氏替换原则-LSP: The Liskov substitution principle
子类必须能够替换基类(重要的)
子类不加额外约束
尽量继承抽象类接口(重要的)
a) LSP关注的是怎样良好的使用继承.
b) 必须要清楚是使用一个Method还是要扩展它,但是绝对不是改变它。
c) .LSP清晰的指出,OOD的IS-A关系是就行为方式而言,行为方式是可以进行合理假设的,是客户程序所依赖的。
d) LSP让我们得出一个重要的结论:一个模型如果孤立的看,并不具有真正意义的有效性。模型的有效性只能通过它的客户程序来表现。必须根 据设计的使用者做出的合理假设来审视它。而假设是难以预测的,直到设计臭味出现的时候才处理它们。
e) 对于LSP的违反也潜在的违反了OCP
2.开放封闭原则-OCP(开闭原则,Open-Closed Principle)
对扩展开放,对更改封闭
使得应用程序具有更多的可维护性,可重用性以及可健壮性
想想:其实里氏替换原则也是开放封闭原则的一个基础
一个软件的实体应当对扩展开放,对修改关闭。我的理解是,对于一个已有的软件,如果需要扩展,应当在不需修改已有代码的基础上进行
3.单一职责原则-SRP(The single responsibility principle )
系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。
SRP 让这个系统更容易管理维护,因为不是所有的问题都搅在一起。
如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化就可能削弱或者抑制这个类其它职责的能力。这种设计会导致
脆弱的设计。当变化发生的时候,设计会遭到意想不到的破坏。
4.接口隔离原则
在设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好
不应该强迫客户程序依赖它们不需要的使用的方法。(客户端不应该依赖于自己不用的方法。)
接口不是高内聚的,一个接口可以分成N组方法,那么这个接口就需要使用ISP处理一下。
接口的划分是由使用它的客户程序决定的,客户程序是分离的接口也应该是分离的。
一个接口中包含太多行为时候,导致它们的客户程序之间产生不正常的依赖关系,我们要做的就是分离接口,实现解耦。
应用了ISP之后,客户程序看到的是多个内聚的接口。
5.依赖倒置原则-DIP(Dependence Inversion Principle)
依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类
高层不依赖低层,都依赖于抽象
针对接口编程,不要针对实现编程
我的理解是,对于不同层次的编程,
高层次暴露给低层次的应当只是接口,而不是它的具体类。
这里的倒置不仅仅是依赖关系的倒置也是接口所有权的倒置。应用了DIP我们会发现往往是客户拥有抽象的接口,而服务者从这些抽象接口派生。
6.组合(聚合)复用原则-DRY : Don't repeat yourself Principle
通过抽取公共部分放置在一个地方避免代码重复.
尽量避免使用继承来复用代码
多用组合,少用继承。
原因:
a、继承会使类无限膨大,可能会使类变得臃肿。
b、子类可能会继承父类中那些无用甚至有害的方法。
c、组合比继承更灵活,可以实现在执行中动态改变对象的功能。
7.迪米特法则(Law of Demeter)
对象间少通信,不要跟陌生人说话
不会跟面向接口编程冲突
众所周知类(或模块)之间的通信越少,耦合度就越低,从而更有利于我们对软件的宏观理。
相关推荐
### 软件开发的201个原则 #### 一、概述 《软件开发的201个原则》是一本全面阐述软件开发过程中应当遵循的原则性指导书籍。该书内容丰富,覆盖了从项目启动到交付的各个阶段,旨在帮助软件开发团队提高产品质量、...
在软件开发过程中,设计原则是指导开发者构建高效、可维护和扩展软件系统的重要准则。这些原则不仅提高了代码质量,还能确保团队之间的沟通清晰,降低维护成本。以下将详细阐述一些核心的软件开发设计原则。 1. **...
在软件开发领域,遵循一定的原则和最佳实践是提高效率、保证质量、确保项目成功的关键。《软件开发的201个原则》是一本为程序员、项目经理以及任何参与软件开发过程的人提供指导的宝贵资源。这本书涵盖了从设计到...
《敏捷软件开发:原则、模式与实践》是Robert C. Martin(简称Uncle Bob)的一部经典著作,这本书深入探讨了敏捷开发的理念、方法和工具,尤其针对C#编程语言进行了详细阐述。作为一本实践导向的技术书籍,它旨在...
技术设计原则是软件开发的基本原则,包括规范性原则、可靠性原则、扩展性原则、开放性原则、易用性原则、安全保密原则等。这些原则是软件开发的核心要求,决定着软件项目的质量和可靠性。 2.3 可靠性原则 可靠性...
7. 软件开发计划书的缺点: 软件开发计划书的缺点是需要投入一定的人力和物力,编写和实施需要一定的时间和资源。 8. 软件开发计划书的应用场景: 软件开发计划书的应用场景非常广泛,涵盖了软件开发的整个过程,从...
基于构件的软件开发技术 本文以某公司生产经营管理系统为例,探讨了基于构件的软件开发问题。该系统是一个集原料采购、生产管理、物流管控...7. 基于构件的软件开发技术在软件开发中的应用(某公司生产经营管理系统)
《软件工程 软件开发成本度量规范》是中国电子行业标准SJ/T 11463—2013,旨在为软件研发过程中涉及的成本估算和度量提供一套规范和指南,适用于架构师、开发工程师和造价工程师等专业人员。该标准的发布和实施有助...
7. **单元测试与集成测试**:编写测试用例以验证代码的功能和性能,是软件开发中的重要环节。单元测试关注单个模块,而集成测试则关注不同模块之间的交互。 8. **代码审查**:通过同行评审代码,可以发现潜在问题,...
《国家软件开发标准》是指导我国软件开发过程的重要依据,旨在提高软件质量、提升开发效率、确保项目可维护性,并促进国内软件产业的规范化发展。该标准融合了国际上广泛认可的CMM(Capability Maturity Model,能力...
精益软件开发的核心原则包括: 1. 消除浪费:识别并去除不增加价值的活动,如过度设计、等待、过度加工、过度生产、运输、库存和运动。这意味着只做必要的工作,并且尽可能减少无用的工作量。 2. 客户价值优先:...
在软件开发领域,基本原则是确保项目成功、代码质量高且可维护性良好的基石。这些原则指导着开发者在设计、编码、测试和维护软件时的行为。下面我们将深入探讨这些基本原则,并结合"软件开发基本原则.pdf"中可能涵盖...
《敏捷软件开发:原则、模式与实践》是Robert C.Martin(通常被称为Uncle Bob)的一部经典著作,深入探讨了软件开发领域的敏捷方法。这本书是面向软件开发人员、项目经理和软件项目领导们的,旨在帮助他们应对软件...
### 软件开发原则与消除重复代码的重要性 在软件工程领域中,代码的复用性和维护性一直是衡量软件质量的重要标准之一。本文基于提供的文件信息,深入探讨了软件开发原则以及如何有效处理重复代码这一核心议题。 ##...
当根据下述的原则来进行测试,测试设计和执行将比其他任何软件开发步骤更具有创造性。本节将详细介绍软件测试的 7 大原则方法。 1. 显示 bug 的存在 软件测试的主要目标是显示应用程序中的缺陷,而不是证明应用...
《计算机软件开发规范_GB_8566-88》是一项国家标准,旨在为软件开发过程提供一套完整的指导原则。该标准详细规定了软件开发过程中各个阶段的任务、实施步骤、实施要求、完成标志及交付文件,旨在提高开发效率和质量...
本主题聚焦于“软件开发文档模板”,特别是“软件开发计划”及其编写指南,这两大核心元素对于确保项目的顺利进行至关重要。 软件开发计划是整个项目生命周期的蓝图,它详细描述了从项目启动到交付的各个阶段、任务...
《软件开发人员行为规范》是指导程序员在软件开发过程中应当遵循的一套准则,旨在提高团队协作效率,保证软件质量,并确保项目的顺利进行。规范涵盖了从项目管理、代码编写到技术选型等多个方面,以下是其中的核心...