精华内容
下载资源
问答
  • 程序设计原则

    2017-09-09 22:39:49
    程序设计原则(总结) 结构化程序设计的主要原则 1、自顶向下  程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题...

    程序设计原则(总结)

    结构化程序设计的主要原则

    1、自顶向下

      程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

    2、逐步求精

      对复杂问题,应设计一些子目标作为过渡,逐步细化。

    3、模块化

      一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。

    4、限制使用goto语句

      结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是:在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是:GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。作为争论的结论,1974年Knuth发表了令人信服的总结,并证实了:

    • GOTO语句确实有害,应当尽量避免;
    • 完全避免使用GOTO语句也并非是个明智的方法,有些地方使用GOTO语句,会使程序流程更清楚、效率更高。
    • 争论的焦点不应放在是否取消GOTO语句上,而应放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用GOTO语句;

    面向对象程序设计的主要原则

    1、单一职责原则(Single-Responsibility Principle)  

      就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的职责的变化。

      优点:消除耦合,减小因需求变化引起代码僵化。

    2、里氏代换原则(Liskov Substitution Principle)

      子类型必须能够替换它们的基类型。一个软件实体如果使用的是一个基类,那么当把这个基类替换成继承该基类的子类,程序的行为不会发生任何变化。软件实体察觉不出基类对象和子类对象的区别。

      优点:可以很容易的实现同一父类下各个子类的互换,而客户端可以毫不察觉。

    3、依赖倒置原则(Dependence Inversion Principle)

      要依赖于抽象,不要依赖于具体,客户端依赖于抽象耦合;抽象不应依赖于细节,细节应依赖于抽象;要针对接口编程,不针对实现编程。

      优点:使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。

      怎样做到依赖倒置?

    • 以抽象方式耦合是依赖倒转原则的关键。抽象耦合关系总要涉及具体类从抽象类继承,并且需要保证在任何引用到基类的地方都可以改换成其子类,因此,里氏代换原则是依赖倒转原则的基础。
    • 在抽象层次上的耦合虽然有灵活性,但也带来了额外的复杂性,如果一个具体类发生变化的可能性非常小,那么抽象耦合能发挥的好处便十分有限,这时可以用具体耦合反而会更好。

      层次化:所有结构良好的面向对象构架都具有清晰的层次定义,每个层次通过一个定义良好的、受控的接口向外提供一组内聚的服务。

      依赖于抽象:建议不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到:

    • 任何变量都不应该持有一个指向具体类的指针或者引用;
    • 任何类都不应该从具体类派生;
    • 任何方法都不应该覆写它的任何基类中的已经实现的方法;

    4、接口隔离原则(Interface Segregation Principle)

      使用多个专一功能的接口比使用一个的总接口总要好。从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。过于臃肿的接口是对接口的污染,不应该强迫客户依赖于它们不用的方法。

      优点:会使一个软件系统功能扩展时,修改的压力不会传到别的对象那里。

      如何实现接口隔离原则?

    • 利用委托分离接口;
    • 利用多继承分离接口;

    5、迪米特原则(Law of Demeter)

      迪米特法则又叫做最少知识原则(Least Knowledge Principle或简写为LKP),就是说,一个对象应当对其他对象有尽可能少的了解,对象与对象之间应使用尽可能少的方法来关联,避免千丝万缕的关系。

      在软件系统中,一个模块设计的好不好的最主要、最重要的标志,就是该模块在多大的程度上将自己的内部数据和其他与实现有关的细节隐藏起来。一个设计好的模块可以将它所有的实现细节隐藏起来,彻底地将提供给外界的API和自己的实现分割开来。这样一来,模块与模块之间就可以仅仅通过彼此的API相互通信,而不理会模块内部的工作细节。这一概念就是“信息的隐藏”,或叫做“封装”,也就是大家熟悉的软件设计的基本教义之一。信息的隐藏非常重要的原因在于,它可以使各个子系统之间脱藕,从而允许它们独立地被开发、优化、使用、阅读以及修改。

      如何实现迪米特法则?

      迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点:

    • 在类的划分上,应当创建有弱耦合的类,类之间的耦合越弱,就越有利于复用
    • 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。
    • 在类的设计上,只要有可能,一个类应当设计成不变类
    • 在对其它对象的引用上,一个类对其它对象的引用应该降到最低
    • 对于顶级的类来说,只有两个可能的访问性等级:package-private和public,一个类可以设置成为package-private的,就不应该把它设置成为public的
    • 谨慎使用Serializable:如果一个类实现了Serializable接口的话,客户端就可以将这个类串行后再并行化。假如以后这个类一旦修改,客户端势必也将改动。所以能不用就不用

    6、开放-封闭原则(Open-Closed Principle)

      对扩展开放,对修改关闭。

      优点:按照OCP原则设计出来的系统,降低了程序各部分之间的耦合性,其适应性、灵活性、稳定性都比较好。当已有软件系统需要增加新的功能时,不需要对作为系统基础的抽象层进行修改,只需要在原有基础上附加新的模块就能实现所需要添加的功能。增加的新模块对原有的模块完全没有影响或影响很小,这样就无须为原有模块进行重新测试。

      如何实现“开-闭”原则?

    • 在面向对象设计中,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。
    • 解决问题关键在于抽象化,抽象化是面向对象设计的第一个核心本质。对一个事物抽象化,即封装了事物的本质,看不到任何细节。
    • 在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需更改,从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。
    • 对实体进行扩展时,不必改动软件的源代码或者二进制代码。

    优秀程序设计的18大原则

    1、避免重复原则(DRY - Don’t repeat yourself)

      编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就很容易形成一个抽象体。

    2、抽象原则(Abstraction Principle)

      与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。

    3、简单原则(Keep It Simple and Stupid)

      简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。

    4、避免创建你不要的代码(Avoid Creating a YAGNI (You aren’t going to need it))

      除非你需要它,否则别创建新功能。

    5、尽可能做可运行的最简单的事(Do the simplest thing that could possibly work)

      尽可能做可运行的最简单的事。在编程中,一定要保持简单原则。作为一名程序员不断的反思“如何在工作中做到简化呢?”这将有助于在设计中保持简单的路径。

    6、别让我思考(Don’t make me think)

      这是Steve Krug一本书的标题,同时也和编程有关。所编写的代码一定要易于读易于理解,这样别人才会欣赏,也能够给你提出合理化的建议。相反,若是繁杂难解的程序,其他人总是会避而远之的。

    7、开闭原则(Open/Closed Principle)

      你所编写的软件实体(类、模块、函数等)最好是开源的,这样别人可以拓展开发。不过,对于你的代码,得限定别人不得修改。换句话说,别人可以基于你的代码进行拓展编写,但却不能修改你的代码。

    8、代码维护(Write Code for the Maintainer)

      一个优秀的代码,应当使本人或是他人在将来都能够对它继续编写或维护。代码维护时,或许本人会比较容易,但对他人却比较麻烦。因此你写的代码要尽可能保证他人能够容易维护。用书中原话说“如果一个维护者不再继续维护你的代码,很可能他就有想杀了你的冲动。”

    9、最小惊讶原则(Principle of least astonishment)

      最小惊讶原则通常是在用户界面方面引用,但同样适用于编写的代码。代码应该尽可能减少让读者惊喜。也就是说,你编写的代码只需按照项目的要求来编写。其他华丽的功能就不必了,以免弄巧成拙。

    10、单一责任原则(Single Responsibility Principle)

      某个代码的功能,应该保证只有单一的明确的执行任务。

    11、低耦合原则(Minimize Coupling)

      代码的任何一个部分应该减少对其他区域代码的依赖关系。尽量不要使用共享参数。低耦合往往是完美结构系统和优秀设计的标志。

    12、最大限度凝聚原则(Maximize Cohesion)

      相似的功能代码应尽量放在一个部分。

    13、隐藏实现细节(Hide Implementation Details)

      隐藏实现细节原则,当其他功能部分发生变化时,能够尽可能降低对其他组件的影响。

    14、迪米特法则又叫作最少知识原则(Law of Demeter)

      该代码只和与其有直接关系的部分连接。(比如:该部分继承的类,包含的对象,参数传递的对象等)。

    15、避免过早优化(Avoid Premature Optimization)

      除非你的代码运行的比你想像中的要慢,否则别去优化。假如你真的想优化,就必须先想好如何用数据证明,它的速度变快了。

      “过早的优化是一切罪恶的根源”——Donald Knuth

    16、代码重用原则(Code Reuse is Good)

      重用代码能提高代码的可读性,缩短开发时间。

    17、关注点分离(Separation of Concerns)

      不同领域的功能,应该由不同的代码和最小重迭的模块组成。

    18、拥抱改变(Embrace Change)

      这是Kent Beck一本书的标题,同时也被认为是极限编程和敏捷方法的宗旨。

    参考链接:

      http://blog.csdn.net/coolingcoding/article/details/8043265

      http://blog.csdn.net/xyylchq/article/details/6291925

      http://jingyan.baidu.com/article/75ab0bcbfb2670d6864db219.html


    展开全文
  • 底层程序设计原则

    2018-10-26 09:20:36
    底层程序设计原则如下。 数字越小,优先级越高。 第一优先; 身体 正面优先,负面其次。 正面:1 主动学习如何锻炼、维护身体的知识。2 坚持长期锻炼,踊跃参加各种活动;  负面: 1 禁酒; 2 别熬夜,早睡; ...

    人就是一台计算机。底层程序设计原则如下。

    数字越小,优先级越高。

    第一优先; 身体

    正面优先,负面其次。

    正面:1 主动学习如何锻炼、维护身体的知识。2 坚持长期锻炼,踊跃参加各种活动;  

    负面: 1 禁酒; 2 别熬夜,早睡; 3 控制性生活,最好是禁欲 ; 4 限制饮食,忌油腻,减肥;

     

    第二优先: 意识

    正面优先,负面其次。1优先,2其次。数字越小,优先级越高。

    正面 : 1 每天冥想 30分钟。 4 有意识地锻炼自己意识地第三重境界。5 学习心理学知识。

    负面:  2 日常生活中,别乱想,尽量让脑袋休息(CPU极低功耗运行)。

    3  别做白日梦。

    6 控制和消灭负面情绪, 如 暴怒,怨恨。

     

    第三优先: 全局,方法。

    1 努力增加全局见识。2 努力学习各种方法。 3 实践。

     

    第四优先: 重建朋友圈,社交圈。锻炼口才能力。

    正面: 1 尽可能的多接触朋友。2 锻炼流利说话的能力。

     

    第五优先: 英语

      1 背单词。

    第六优先: 阅读英语的新闻。

     

    第六 优先 财经,投资,理财。

     1 考证。 2 实践。 3 学习。

    第 7 优先 计算机知识

    1 考证     2 学习

     

     

     

     

     

     

     

     

     

    展开全文
  • Qt GUI程序设计原则

    2019-08-13 14:05:10
    实际项目中总结出的Qt GUI程序设计原则 简洁设计:根据项目主功能先设计出项目主类(核心类) 低耦合性:项目主类之间的依赖关系越少越好,降低耦合性 附加功能:逐步添加其他功能(类) 界面设计:先做界面原型...

    实际项目中总结出的Qt GUI程序设计原则

    1. 简洁设计:根据项目主功能先设计出项目主类(核心类)
    2. 低耦合性:项目主类之间的依赖关系越少越好,降低耦合性
    3. 附加功能:逐步添加其他功能(类)
    4. 界面设计:先做界面原型设计符合项目需求,再进行扩展
    5. 多个线程:提高产品速度
    6. 产品测试:保证产品质量
    展开全文
  • 面向对象程序设计原则有哪些? 答案: (1)单一职责原则(Single Responsibility Principle):如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一...

    问题:

    面向对象程序设计原则有哪些?

    答案:

    (1)单一职责原则(Single Responsibility Principle):如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。
    (2)开闭原则(Open Closed Principle):对增加新功能开发,对修改原来的代码关闭,使用面向接口编程或者面向切面编程可以实现。
    (3)里氏转换原则(Liskov Substitution Principle):程序中,所有能出现父类的地方都能用子类代替,且程序结果不错不变。
    (4)迪米特法则(Law of Demeter):最少知识原则,能用少的技术实现效果,就不要用多的技术。
    (5)接口隔离原则(Interface Segregation Principle):客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。
    (6)依赖倒置原则(Dependence Inversion Principle):上层模块不应该依赖底层模块,它们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

    展开全文
  • 最近一直打算写一篇关于程序设计原则和设计模式的文章,没有想到这事一拖尽然跨年了,今天已经是1月3号,这也是我2020年写的第一篇文章,也祝愿自己在新的一年里能心想事成,一帆风顺。 不知不觉自己坚持写文章已经...
  • 程序设计中,前辈们总结出来了一些通用原则,只要遵循这些原则,就能改善你程序的设计,并指导你完成程序设计 学习地址:http://www.gulixueyuan.com/my/course/323 一、代码应该遵守的一些原则 1、单一职责...
  • 程序设计原则一般来说有六个: 1.单一职责原则 2.里氏代换原则 3.依赖倒置原则(依赖抽象原则) 4.接口隔离原则 5.最少知识原则 6.开闭原则 程序设计过程中所有的这些原则中单一职责原则和里氏代换原则直接涉到了类...
  • 程序架构师设计师必须掌握的面向对象的程序设计原则    一个优秀的软件项目,除去优秀的界面设计和合理恰当的功能设计以外,其程序的架构设计也一定是优秀的,本文专门探讨面向对象的程序架构设计问题。这也是每一...
  • 1.类的设计和接口 类的设计好坏可以从一些方面看出,比如:能否方便地添加新的接口,维护是否简单。...如果说一个程序能用,但是要添加新功能时就很困难,甚至需要把整个程序重写,那么它在设计时肯定出现了问题。 ...
  • Ò程序设计领域, SOLID (单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特•C•马丁在21世纪早期 引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起...
  • JAVA 程序设计原则

    千次阅读 2018-06-29 09:55:50
    1、开闭原则(Open Close Principle) 开闭原则就是说对扩展...想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。 2、里氏代换原则(Liskov Substitution Principle) 里氏代...
  • 设计模式原则 单一职责原则 一个类应该只负责一项职责,不要存在多于一个导致类变更的原因。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更,而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A ...
  • 程序设计原则-模块化

    2019-10-08 22:13:13
    面向过程程序设计模块化原则和面向对象程序设计模块化原则通遵循此原则: 面向数据逻辑模块化原则数据逻辑:站在数据逻辑角度进行问题分析,依据数据逻辑模块化原则进行分析设计。 面向程序逻辑模块化原则程序...
  • 程序设计原则和要点

    2019-09-25 23:02:50
    1.程序设计的思路 程序设计,是架构师和高级软件工程师的必备工作之一,也是项目经理的必须能力之一。 程序设计的思路是: 1)理解功能,保证功能实现; 2)让程序结构简单,容易维护; 3)去处冗杂; 4...
  • 但是接口数量也不能过多,要适量,否则会增加程序设计的复杂性 二、一个单一总接口的例子 其类图如下: 这样设计就违背了接口隔离的原则,不是所有的鸟都能游泳和飞翔,但是这样实现的Bird类型受限于单一...
  • 一、基本概念 OO(Object Oriented,面向对象)原则是我们的目标,而设计模式(Design Pattern)是我们的做法。为了交互对象之间的松耦合设计而努力。 良好的OO设计必须具备可复用、可扩充、可维护三个特性。OO基本...
  • 以前一直认为程序中的类有使用到封装继承多态就是面向对象设计,其实不然。封装、继承、多态只是面向对象的三大特性,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象。   其实...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,812
精华内容 5,124
关键字:

程序设计原则