首页
学习
活动
专区
工具
TVP
发布

《软件开发的201个原则》—— 一般原则、需求原则、设计原则、编码原则、测试原则、管理原则、产品原则、演变原则

软件行业已经有大量讨论技术、语言和工具的图书,但很少有图书试图去编制基本原则的清单。如图1-1所示,原则(Principle)是工作的准则; 原则代表了许多人从经验中总结出来的集体智慧。...一个学科的原则集合,会随着学科的发展而发展。现存的原则会发生改变,新的原则会被加进来,旧的原则将不再适用。实践和从实践中获得的经验,促使我们发展了那些原则。...原则36 研究再转化,不可行 关于软件工程研究所中令人难以置信的技术成就,有大量报道。但它们很少能应用于软件开发实践,原因是: 1.一般来说,软件研究者很少有开发实际系统的经验。...原则131 人是成功的关键 具备合适经验、才能、培训的能人,是在预算内按时完成满足用户需求的软件的关键。即使没有足够的工具、语言和流程,有合适的人也会成功。...本原则想说:对于一个关键任务,你最好只安排少数有足够经验的工程师,而不是安排许多没有经验的工程师。这就是Don Reifer的“管理原则第6条”。

47520
您找到你想要的搜索结果了吗?
是的
没有找到

【组合数学】基本计数原则 ( 加法原则 | 乘法原则 )

加法原则 ( 1 ) 加法原则 ( 不能叠加 的事件才能用 加法原则 | 适用于 分类选取 ) ( 2 ) 乘法法则 ( 相互独立 的 事件 才能用 乘法法则 | 适用于 分步选择 ) 2....习题解析 ( 1 ) 习题 1 ( 加法原理 ) ( 2 ) 习题 2 ( 加法原则 乘法原则 综合运用 ) ( 3 ) 习题 3 ( 乘法原则 ) 1....加法原则 ( 1 ) 加法原则 ( 不能叠加 的事件才能用 加法原则 | 适用于 分类选取 ) 加法原则 : 1.加法法则描述 : 事件 A 有 m 种 产生方式 , 事件 B 有 n...种 , 三种方式只能选择一种 , 三者不能重叠 ( 同时存在 ) , 因此使用加法原则 进行计算 ; ③ 结果是 : 15 + 8 + 20 = 43 ; ---- ( 2 ) 习题 2 ( 加法原则...解 : 加法原则 : ① 直接从 A 到 C 与 ② 从 A 先到 B 再到 C 是 不能重叠的 , 方案 ① 与 方案 ② 需要 用家法原则 , 乘法原则 : 方案 ② 内部需要使用

81540

设计原则(1)| 开闭原则

这些操作都是通过「修改」来实现新功能的,不符合「开闭原则」。 如果我们要遵循「开闭原则」,必须对修改关闭,对扩展开放。...其次,「开闭原则」的定义是软件实体(模块、类、方法等)应该对扩展开放,对修改关闭。...所有的设计原则都只有一个最终归宿——不破坏原有代码的正常运行,方便扩展。...随着你的理论知识和实战经验的提高,同时对业务有了足够了解,你在设计代码结构时会很自然地向未来靠拢(这需要稍加练习,这种技能不是单纯靠工作时长就能获得的),识别出未来可能会发生的扩展点。...还是那句话,设计原则和设计模式不是金科玉律,只要适合当前需求,并具备一定弹性的设计就是好设计。要平衡代码扩展性和可读性,切勿滥用设计原则和设计模式,牺牲代码的可读性。

54820

设计模式原则:开放封闭原则

开放封闭原则 开放封闭原则表示一个软件实体(如类、模块、函数等)应该对扩展开放,对修改封闭。也就是说,一个软件实体应该在不修改原有代码的前提下,可以扩展新的功能。...开放封闭原则是设计模式的核心原则,它体现了软件的灵活性和稳定性。如果一个软件能够满足开放封闭原则,那么它就具有以下两个优点: 能够扩展已有的功能,满足新的需求,具有很强的适应性和灵活性。...{ throw new IllegalArgumentException("Invalid expression"); } } } 这个类违反了开放封闭原则...为了遵循开放封闭原则,我们应该将 Calculator 类设计成一个抽象类,并定义一个抽象方法 calculate()。

12540

Java设计原则—开闭原则(转)

开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的、灵活的系统。 定义: 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。...开闭原则的含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有代码来实现变化。...软件实体包括以下几个部分: 项目或软件产品中按照一定的逻辑规则划分的模块 抽象和类 方法 开闭原则是为软件实体的未来事物而制定的对现行开发设计进行约束的一个原则。...开闭原则的重要性: 开闭原则对测试的影响 开闭原则可是保持原有的测试代码仍然能够正常运行,我们只需要对扩展的代码进行测试就可以了。...开闭原则可以提高可维护性 面向对象开发的要求 如何使用开闭原则: 抽象约束 第一,通过接口或者抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法; 第二,参数类型、引用对象尽量使用接口或者抽象类

17320

3W原则,20H原则,五五原则

3W原则: 这里3W是线与线之间的距离保持3倍线宽。你说3H也可以。但是这里H指的是线宽度。不是介质厚度。...20H原则: 是指电源层相对地层内缩20H的距离,当然也是为抑制边缘辐射效应。在板的边缘会向外辐射电磁干扰。将电源层内缩,使得电场只在接地层的范围内传导。有效的提高了EMC。...针对EMC PCB设计中的20H原则? "20H规则"的采用是指要确保电源平面的边缘要比0V平面边缘至少缩入相当于两个平面间层距的20倍。...笔面试作答简记: 20H原则是指电源层边缘要比地层边缘至少缩进20倍的层与层间距,以抑制边缘辐射效应; 内缩20H可限制70%的电场,内缩100H可限制98%的电场。

91310

java设计原则--里氏替换原则

缺点三:增强了耦合性,当父类的常量、变量和方法被修改时需要考虑子类的修改 里式替换作用 Java的单继承机制从总体上看是利大于弊,那么,如何让利的优势发挥最大,同时减少弊的带来的麻烦呢,于是就有了里式替换原则...,里氏替换原则为良好的继承定义了一个规范 我们在做系统设计时,经常会定义一个接口或抽象类,然后编码实现,调用类则直接传入接口或抽象类,其实这里已经使用了里氏替换原则 举一个CS的案例: 枪的主要职责是射击...注意 在类中调用其他类时务必要使用父类或接口,如果不能使 用父类或接口,则说明类的设计已经违背了LSP原则 本文内容参考设计模式之禅,仅用于个人学习,如有不妥请联系删除

78020

设计原则之开闭原则(OCP)

如何应对这些变化是开闭原则要解决的问题。开闭原则允许软件实体在不更改其代码的情况下变更其行为(变更包括改变和增加)。...插件与中间件 插件与中间件可以说必须遵守开闭原则。软件在发布后使用人员是无法修改源代码的,因此源代码设计人员需将能力开放给使用人员,就必须依赖开闭原则。...有关这方面,有人提出了 SPI 的概念,可参加以前写的API 与 SPI 与设计模式之间的关系 设计原则是设计模式的指导,设计模式是设计原则的具象。比较虚的原则需要使用比较实的模式来说明。...很多文章使用策略模式来讲解开闭原则,导致很多人认为开闭原则就是策略模式,实际上策略模式是开闭原则的一种实现而已。...按照开闭原则,应该尽量做到修改封闭。

1.1K30

设计模式原则:里氏替换原则

里氏替换原则 里氏替换原则表示如果对每一个类型为 S 的对象 o1 都有类型为 T 的对象 o2 ,使得以 T 定义的所有程序 P 在所有的对象 o1 都代换成 o2 时 ,程序 P 的行为没有发生变化...里氏替换原则是继承复用的基础,它体现了子类和父类之间的关系。...如果一个软件能够遵循里氏替换原则,那么它就具有以下两个优点: 保证了父类的抽象性和可复用性,子类可以扩展父类的功能,但不会破坏父类的约束和规范。...这个类就违反了里氏替换原则,因为它改变了父类的行为含义,使得在程序中无法将 Bird 对象替换 Animal 对象,而不改变程序的逻辑。...Animal { @Override public void run() { System.out.println("鸟可以飞行"); } } 为了遵循里氏替换原则

14430

Java设计原则—接口隔离原则(转)

接口隔离原则 Interface Segregation Principle 定义: 客户端不应该依赖它不需要的接口 类间的依赖关系应该建立在最小的接口上 我们可以把这两个定义概括为一句话:建立单一接口...含义: 接口要尽量小 这是接口隔离原则的核心定义,不出现臃肿的接口(Fat Interface),但是“小”是有限度的,首先就是不能违反单一职责原则。...根据接口隔离原则拆分接口时,首先必须满足单一职责原则。 接口要高内聚 高内聚就是要提高接口、类、模块的处理能力,减少对外的交互。...具体到接口隔离原则就是,要求在接口中尽量少公布public方法,接口是对外的承诺,承诺地越少对系统开发越有利,变更的风险也就越少,同时也有利于降低成本。...但是,灵活的同时也带来了结构的复杂化,开发难度增加,可维护性降低,这不是一个项目或产品所期望看到的,所以接口设计一定要注意适度,这个度只能根据经验和常识判断,没有一个固化或可测量的标准。

19220

设计原则之依赖倒置原则(DIP)

简介 依赖倒置原则是系统解耦的重要原则,遵循它可以让我们的系统更加健壮。 定义 依赖倒置原则(Dependency Inversion Principle)是 Robert C....Martin 提出的,原则声明了两个方面: 上层模块不应该依赖下层模块,双方都应依赖于抽象。 抽象不应依赖实现,实现应该依赖抽象。 依赖倒置原则的声明中有几个概念:上层、下层,抽象、实现。...依赖倒置原则要求在设计层间通信、交互标准时,不应依赖于某个下层,而是应该依赖于抽象,这样上下层之间就没有强耦合,如果两个实现都遵循了同样的抽象,则可以在上层无感知的情况下替换下层实现。...依赖倒置原则说明实现应该依赖于抽象,是因为实现是对抽象骨架的填充,而抽象不应依赖于实现,是因为抽象是对本质的归纳,应去掉细节的干扰。 看了上面的规则,还需要问一下依赖倒置原则倒置了什么呢?...总结 在考虑依赖倒置原则的使用时,跟单一职责原则一样,需要注意使用的粒度。如果所有的代码都符合依赖倒置原则,那就过犹不及了。 依赖倒置原则要求系统建立在抽象的基石之上,而不是实现的浮土之上。

81010

面向对象设计原则之开闭原则

开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一。...什么是开闭原则 开闭原则明确的告诉我们:软件实现应该对扩展开放,对修改关闭,其含义是说一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化的。...为什么使用开闭原则 第一:开闭原则非常有名,只要是面向对象编程,在开发时都会强调开闭原则 第二:开闭原则是最基础的设计原则,其它的五个设计原则都是开闭原则的具体形态,也就是说其它的五个设计原则是指导设计的工具和方法...,而开闭原则才是其精神领袖。...依照Java语言的称谓,开闭原则是抽象类,而其它的五个原则是具体的实现类。 第三:开闭原则可以提高复用性 在面向对象的设计中,所有的逻辑都是从原子逻辑组合而来,而不是在一个类中独立实现一套业务逻辑。

82930

6大设计原则之开闭原则

开闭原则的定义 开闭原则的定义: 一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭.即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化....开闭原则的好处 开闭原则是一个最基本的原则,另外五个原则都是开闭原则的具体形态,是指导设计的工具和方法,而开闭原则才是精神领袖....开闭原则有利于进行单元测试 开闭原则可以提高复用性 开闭原则可以提高可维护性 面向对象开发的要求 开闭原则的使用 1.抽象约束 通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的...不能有两个不同的变化出现在同一个接口或抽象类中.封装变化,找出预计的变化或不稳定的点,为这些变化点创建稳定的接口,准确的讲是封装可能发生的变化.23个设计模式都是从各个不同的角度对变化进行封装的. ---- 开闭原则也只是一个原则...,实现拥抱变化的方法很多,并不局限于这6大设计原则,但是遵循着6大设计原则基本上可以应对大多数变化.

72750
领券