`
anyitzy
  • 浏览: 10633 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

软件开发7大原则

 
阅读更多

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个原则v1.3.pdf

    ### 软件开发的201个原则 #### 一、概述 《软件开发的201个原则》是一本全面阐述软件开发过程中应当遵循的原则性指导书籍。该书内容丰富,覆盖了从项目启动到交付的各个阶段,旨在帮助软件开发团队提高产品质量、...

    软件开发设计原则软件开发设计原则

    在软件开发过程中,设计原则是指导开发者构建高效、可维护和扩展软件系统的重要准则。这些原则不仅提高了代码质量,还能确保团队之间的沟通清晰,降低维护成本。以下将详细阐述一些核心的软件开发设计原则。 1. **...

    软件开发的201个原则 -- 中文版.zip

    在软件开发领域,遵循一定的原则和最佳实践是提高效率、保证质量、确保项目成功的关键。《软件开发的201个原则》是一本为程序员、项目经理以及任何参与软件开发过程的人提供指导的宝贵资源。这本书涵盖了从设计到...

    敏捷软件开发 原则模式与实践

    《敏捷软件开发:原则、模式与实践》是Robert C. Martin(简称Uncle Bob)的一部经典著作,这本书深入探讨了敏捷开发的理念、方法和工具,尤其针对C#编程语言进行了详细阐述。作为一本实践导向的技术书籍,它旨在...

    敏捷软件开发:原则、模式与实践(带书签,源码)

    《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念、方法和技术的权威著作。这本书由著名软件开发专家Robert C. Martin撰写,旨在帮助开发者和团队更有效地进行软件开发,提升软件项目的成功率。书中...

    敏捷软件开发:原则、模式与实践(带书签+源码)

    《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念和技术的权威著作,由业界知名专家Robert C. Martin(简称Uncle Bob)撰写。这本书不仅提供了丰富的理论知识,还结合实际案例,深入浅出地介绍了如何...

    软件开发投标书.docx

    技术设计原则是软件开发的基本原则,包括规范性原则、可靠性原则、扩展性原则、开放性原则、易用性原则、安全保密原则等。这些原则是软件开发的核心要求,决定着软件项目的质量和可靠性。 2.3 可靠性原则 可靠性...

    敏捷软件开发:原则、模式与实践

    敏捷软件开发原则、模式和实践涉及的几个关键方面如下: 1. 敏捷宣言的核心价值: 敏捷宣言是由一群软件开发人员起草的一份文档,其核心价值体现了敏捷开发的核心理念,包括: - 个体和互动高于流程和工具 - 可...

    软件开发基本原则知识.pdf

    7. 软件开发的基本原则:软件开发的基本原则是软件开发的核心要素之一。它包括避免混乱低效的开发、避免典型错误、打好开发基础、管理风险和采取面向进度的实践等几个方面。 软件开发的基本原则是软件开发项目的...

    敏捷软件开发:原则、模式与实践.pdf

    中文名: 敏捷软件开发:原则、模式与实践 原名: Agile Software Development:Principles,Patterns and Practices 别名: 软件工程实践丛书 作者: (美)Robert C.Martin译者: 邓辉 孟岩图书分类: 软件 资源格式: PDF ...

    敏捷软件开发:原则、模式与实践(全部)

    《敏捷软件开发:原则、模式与实践》是敏捷开发领域的一部经典著作,全面而深入地探讨了敏捷方法的核心理念、关键原则、实用模式以及实践经验。这本书由Robert C. Martin撰写,他是一位知名的软件工程师和敏捷开发的...

    敏捷软件开发:原则、模式与实践(pdf中文版)

    敏捷软件开发:原则、模式与实践 Bob大叔经典力作,历时7年

    软件开发计划书

    7. 软件开发计划书的缺点: 软件开发计划书的缺点是需要投入一定的人力和物力,编写和实施需要一定的时间和资源。 8. 软件开发计划书的应用场景: 软件开发计划书的应用场景非常广泛,涵盖了软件开发的整个过程,从...

    敏捷软件开发:原则、模式与实践(中文高清)

    《敏捷软件开发:原则、模式与实践》是一本深度探讨敏捷开发理念和技术的权威书籍,中文高清版使得读者能够更加清晰地理解其中的精髓。这本书是提升编程技能和项目管理能力的重要参考资料,对于IT行业的从业者来说,...

    敏捷软件开发:原则、模式与实践(C#版)

    《敏捷软件开发:原则、模式与实践(C#版)》是一本深入探讨敏捷开发方法在C#编程语言中的应用的书籍。这本书旨在帮助开发者理解并掌握敏捷开发的核心理念,同时提供具体的C#代码示例,使理论与实践相结合。 1. ...

    论基于构件的软件开发.docx

    基于构件的软件开发技术 本文以某公司生产经营管理系统为例,探讨了基于构件的软件开发问题。该系统是一个集原料采购、生产管理、物流管控...7. 基于构件的软件开发技术在软件开发中的应用(某公司生产经营管理系统)

    软件工程 软件开发成本度量规范

    《软件工程 软件开发成本度量规范》是中国电子行业标准SJ/T 11463—2013,旨在为软件研发过程中涉及的成本估算和度量提供一套规范和指南,适用于架构师、开发工程师和造价工程师等专业人员。该标准的发布和实施有助...

    软件开发标准 软件开发标准

    7. **单元测试与集成测试**:编写测试用例以验证代码的功能和性能,是软件开发中的重要环节。单元测试关注单个模块,而集成测试则关注不同模块之间的交互。 8. **代码审查**:通过同行评审代码,可以发现潜在问题,...

Global site tag (gtag.js) - Google Analytics