`
dahai639
  • 浏览: 14509 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

软件开发中的几个原则

 
阅读更多

1.单一职责(SRP)

     一个类或者一个方法,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。

2. 开闭原则(OCP)

  开闭原则指的是一个软件实体应对对扩展开发,对修改关闭。

3. 依赖倒置原则(DIP,IOC)

依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。

抽象不应当依赖于细节;细节应当依赖于抽象;
要针对接口编程,不针对实现编程。

4. 组合/聚合复用原则

   在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分:新的对象通过向这些对象的委派达到复用已有功能的目的。

5. 里氏替换原则(LSP)

  所有引用基类的地方必须能透明地使用其子类的对象。

即:

  所以使用基类代码的地方,用派生类代码替换后,能够正确的执行动作处理。

换句话说,如果派生类替换了基类后,不能够正确执行动作,那么他们的继承关系就应该废除。

6.迪米特法则(Law of Demeter)

  如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另外一个类的某一个方法,可以通过第三者转发这个调用。

将迪米特法则运用到系统的设计中时,应注意的几点:

① 在类的划分上,应该创建有弱耦合的类;
② 在类的结构设计上,每一个类都应当尽量降低成员的访问权限;
③ 在类的设计上,只要有可能,一个类应当设计成不变类;
④ 在对其他类的引用上,一个对象对其它对象的引用应当降到最低;
⑤ 尽量降低类的访问权限;
⑥ 谨慎使用序列化功能;
⑦ 不要暴露类成员,而应该提供相应的访问器(属性)。 

分享到:
评论

相关推荐

    软件开发的201个原则

    原则,是在编程技巧、编程语言、设计模式、工具之下的最底层的东西,它是人们在几十年的软件开发过程中不断经历、提炼出来的重要经验,体系了软件设计、开发过程中的设计哲学。 随着技术和时代的发展,这些原则可能...

    软件开发的201个原则(推荐)

    原则,是在编程技巧、编程语言、设计模式、工具之下的最底层的东西,它是人们在几十年的软件开发过程中不断经历、提炼出来的重要经验,体系了软件设计、开发过程中的设计哲学。随着技术和时代的发展,这些原则可能...

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

    许多有关软件设计的书籍中,要么先讲述一些设计原则、模式,然后再给出几个简单的在理想情况下的应用;要么是拿一个最终的设计结果来剖析,然后告诉你它们是多么的优美。当时,你可能真会那么认为,但是当你试图在...

    敏捷软件开发:原则、模式与实践HD(PDF高清版本)

    1.书名:敏捷软件开发:原则、模式与实践(Agile Software Development)。 2.一本非常好的关于软件设计的书,获得13界软件开发震(JOlT)撼大奖,做软件开发的别说不知道这个奖哈。。。。。 3.刚刚毕业没有几年的...

    《敏捷软件开发(原则模式与实践)》读书笔记

    由于书是由英文书籍翻译,读起来会难免拗口,本次分享是由《敏捷软件开发》结合网上相关资料总结而成。...大体分为这几个阶段:需求分析、设计、编码、测试、维护。瀑布模型传统和敏捷开发比较敏捷开发以用户的需求进化

    软件开发项目影响进度因素及控制浅谈

    常见的问题有以下几种情况:1、80-20原则与过于乐观的进度控制80-20原则在软件开发项目进度控制方面体现在:80%的项目工作可以在20%的时间内完成,而剩余的20%的项目工作需要80%的时间。这个80%的项目工作不

    RUP开发过程与UML建模

    简单说明了软件开发的几个指导原则及模型的概念

    计算机软件用户界面设计的基本原则.doc

    这意味着可以将它分解为以下几个问题,由此作为一个 开发项目的开始:(1)这个软件是为谁设计的?谁是目标用户?谁是目标客户?(2)这个软 件是做什么的?它打算支持什么行为?它将帮助用户解决什么问题?它将提供什么...

    软件工程知识点

    它包含:软件定义、软件开发、软件运行维护三个时期,并可以细分为可行性研究、项目计划、需求分析、概要设计、详细设计、编码实现与单元测试、系统集成测试、系统确认验证、系统运行与维护等几个阶段。 软件定义...

    (软考软件设计师)软件工程习题200题.doc

    软件设计:软件工程习题200题之二 我的软件工程笔记99年末的一段,是当时几乎所有...有几个定义?各自特点是什么? 14、 有几种效益的分析方法? 15、 需求分析的任务是什么? 16、 需求分析通常采用哪些分析技术?

    软件测试中需要构建测试数据,项目内包含构建测试数据的原则和一些方法包

    测试数据构建是软件开发过程中的一个关键环节,它涉及到创建用于测试软件系统的数据集合。这些数据需要能够覆盖各种可能的场景,以确保软件在不同条件下的稳定性和可靠性。一个良好的测试数据构建项目通常包含以下几...

    VisualStudioTeamArchitect团队的敏捷软件开发

    在最近几次与客户面对面的交流中,我有幸分享了我们团队如何在日常工作中进行敏捷软件开发。毫无疑问,这在中国开发人员中是个热门话题,我也想利用博客这个平台与更多的读者进行书面的交流。当然关于敏捷开发利弊...

    软件配置管理

    界定软件的组成项目,对每个项目的变更进行管控(版本控制),并维护不同项目之间的版本关联,以使软件在开发过程中任一时间的内容都可以被追溯,包括某几个具有重要意义的数个组合。软件配置管理,贯穿于整个软件生命...

    软件工程之专题七:软件工程专题

    结构化方法的分析结果由数据流图DFD、数据词典和加工逻辑说明几个部分组成。其中,DFD的基本成分有数据流(data flow)、加工(process)、文件(file)和源/宿(source/sink)。  画数据流图的基本步骤:自外向内...

    通过插件与 Jira 集成优化软件开发过程 - Devops 中的项目管理工具-研究论文

    Agilecraft、Trello、Leankit 和 JIRA 是该领域中少数几个市场领先的项目管理工具。 本研究论文明确讨论了通过包含不同的插件来增强 Jira 的核心功能来优化软件开发过程。这种集成将帮助软件开发和运营团队在同一...

    安阳工学院--软件工程复习指南

    1.软件是计算机系统中与硬件相互依存的另一部分,软件包括程序...软件生存期大体可分为如下几个阶段:软件定义,软件开发,运行维护。 7.软件生存期模型:是从软件项目需求定义直至软件运行维护为止,跨越整个生命周期

    软件工程的问答题.doc

    有几个定义?各自特点是什么? 14、 有几种效益的分析方法? 15、 需求分析的任务是什么? 16、 需求分析通常采用哪些分析技术? 17、 什么是结构化分析?他的结构化体现在哪里? 18、 简述面向对象分析技术的主要步骤? 19...

Global site tag (gtag.js) - Google Analytics