`
xinklabi
  • 浏览: 1591661 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

软件开发的几大原则

 
阅读更多

这些原则都是从《大话设计模式》里面整理出来的,现只把里面概念性的东西提取出来,说明的例子就不写了(因为用以理解并不是很贴切),这些原则都不是很容易理解,可以多查阅相关资料。

 

这些原则的使用一般都是为了软件的代码复用性,可扩展性,可维护性。

 

1. 单一职责原则:就一个类而言,应该只有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化,这种设计会遭到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把这些职责相互分离。如果你能想到多于一个动机去改变一个类,那么这个类就有多于一个的职责。

 

2. 开放-封闭原则:是说软件实体(类,模块,函数等等)应该可以扩展,但不能修改。对于扩展是开放的(Open for extension),对于修改是关闭的(Closed for modification)。怎样的设计才能面对需求的改变却能保持相对稳定,从而使得系统可以在第一个版本之后不断推出新版本呢?无论模块多么“封闭”,都会存在一些无法对之封闭的变化。既然不能完全封闭,设计人员应该对于他设计的模块应该对那种变化进行封闭做出选择。他必须猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。也许事先不能猜测到那些地方会经常变化,但是变化发生时要立即采取行动,查明可能发生的变化所等待的时间越长,要创建正确的抽象就越困难。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,可复用,灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,对于程序中每个部分都刻意进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。(http://baike.baidu.com/view/2493421.htm百科的介绍,可以好好看看)

 

3. 依赖倒转原则:原话解释是抽象不应该依赖细节,细节应该依赖于抽象,高层模块不应该依赖底层模块,两个都应该依赖抽象。说白了就是针对接口编程,不要针对实现编程(无论主板,CPU,内存,硬盘都是在针对接口设计的,如果针对实现来设计,内存就要对应到具体的某个品牌的主板,那就会出现换内存需要把主板也换了的尴尬)。依赖倒转其实可以说是面向对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之就是面向过程设计的了。

 

4. 里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它观察不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化,简单来讲,子类型必须能够替换掉它们的父类型。只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础行增加新的行为。正是由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。

 

5. 迪米特法则(最小知识原则):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。迪米特法则首先强调的前提是在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为就不要公开。迪米特法则其根本思想,是强调了类之间的松耦合。类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。(里面举的取电脑的例子挺有说明性,小菜到公司领电脑,找到一个人,他推给另一个人,另一个又推给另一个人。。。小菜如果是一个类的话,那么他找的第一个人就是他直接打交道的类,而这个人推给了其他人相当于这个类有改动,此时任务就无法完成,系统的设计要做大的改动。而依照迪米特法则,那么应该新建一个专门负责管理电脑的部门,小菜直接与这个部门打招呼,这个部门进行统筹安排。以类的概念讲就是新建一个管理类,小菜类直接与这个类通信,这样即便其他类有改动,也不会造成大的波及)。

分享到:
评论

相关推荐

    软件开发的201个原则完整版.pdf

    软件开发的201个原则完整版.pdf 软件开发的201个原则是软件开发领域的重要文献,旨在总结和提炼软件开发的基本原则和最佳实践。本书共分为20章,涵盖了软件开发的各个方面,包括质量管理、开发效率、客户沟通、项目...

    软件开发的201个原则

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

    软件开发的201个原则v1.3.pdf

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

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

    《敏捷软件开发原则、模式与实践》一书是由著名软件开发专家、软件工程大师Robert C. Martin所著。这本书自出版以来,就被视为敏捷开发领域内的经典之作,对于软件开发人员、项目经理以及软件项目领导者来说,它提供...

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

    《敏捷软件开发:原则模式与实践》是由著名软件开发专家、软件工程大师Robert C. Martin(别名Uncle Bob)所著的指导书籍,旨在为软件开发人员、项目经理以及软件项目领导提供解决实际问题的方法和策略。本书将敏捷...

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

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

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

    1. **敏捷开发原则**:强调快速响应变化,通过迭代和增量方式交付软件,以适应需求的变化和市场的不确定性。 2. **YAGNI(你不会需要它)原则**:避免过度设计,只开发当前真正需要的功能,以减少工作量和维护成本...

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

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

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

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

    敏捷软件开发:原则、模式与实践清晰扫描中文版PDF(503页完整版)

    本书《敏捷软件开发:原则、模式与实践》是由全球知名的软件开发专家和软件工程大师Robert C. Martin所著,该书是关于敏捷开发与极限编程的综合性、实用性指南。书中深入探讨了软件开发人员、项目经理以及软件项目...

    敏捷软件开发:原则、模式与设计.pdf

    敏捷软件开发:原则、模式与设计.pdf敏捷软件开发:原则、模式与设计.pdf

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

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

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

    本书讲授了一些原则、模式以及实践,它们可以帮助软件开发人员在追求美的程序、设计以及团队的道路上迈出第一步。本书探索了基本的设计原则,软件设计结构的通用模式以及有利于团队融为一个有机整体的一系列实践。...

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

    本书中,享誉全球的软件开发专家和软件工程大师RobertC.Martin深入而生动地使用真实案例讲解了面向对象基本原则、重要的设计模式、UML和敏捷实践等程序员必备的知识。本书于2003年荣获第13届Jolt大奖,是C++和Java...

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

    Martin,作为敏捷开发的权威和实践者,通过《敏捷软件开发:原则、模式与实践》一书,向读者展示了一系列核心原则、模式和实践经验,旨在解决软件开发人员、项目经理及软件项目领导在开发过程中面临的问题。...

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

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

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

    4. **源码示例**:附带的源码文件,可能是为了便于读者理解和应用书中的概念,通过实际代码展示如何在项目中实现敏捷开发原则和模式。 5. **书签和章节结构**:PDF文件带有书签,方便读者快速定位到感兴趣的部分,...

    敏捷软件开发:原则、模式与实践(Agile.software.development:Principles,Patterns,and.Practices)中英版

    2. **原则**:书中提出了12条敏捷开发原则,如“我们的最高优先级是通过尽早并持续交付有价值的软件来使客户满意”,“欢迎随时改变需求,即使在开发的后期”。这些原则旨在鼓励灵活应对变化,促进团队与客户的紧密...

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

    《敏捷软件开发:原则、模式与实践》(Agile Software Development: Principles, Patterns, and Practices)是由全球知名的软件开发专家、软件工程大师Robert C. Martin(俗称“Uncle Bob”)所著。这本书全面地介绍...

Global site tag (gtag.js) - Google Analytics