zoukankan      html  css  js  c++  java
  • 敏捷软件开发--敏捷开发原则

    编写单元测试是一种验证行为,更是一种设计行为。
    测试时一个无价的文档。如果你想知道如何调用一个函数或者创建一个对象,会有一个测试展示给你看。

    什么是设计?不应该认为设计就是一组和代码分离的UML图。
    一组UML图也许描绘了设计的一些部分,但是它不是设计。(还是要代码化)

    僵化性是指难以对软件进行改动,即使是简单的改动。如果单一的改动会导致有依赖关系的模块的连锁改动,那么设计就是僵化的。

    脆弱性是指在进行一个改动时,程序的许多地方就可能出现问题。要修正这些问题就又会引出更多的问题。

    牢固性是指设计中包含了其他系统有用的部分,但是要把这些部分从系统中分离出来所需要的努力和风险是巨大的。

    晦涩性是指模块难以理解。代码可以用清晰、富有表现力的方式编写,或者可以用晦涩、费解的方式编写。

    在实现新需求是,团队抓住这次机会去改进设计,以便设计对于将来的同类变化具有弹性,而不是设法去给设计打补丁。

    单一职责原则,如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。如果一个类承担的职责过多,就等于把这些职责耦合在了一起。
    一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。

    开放一封闭原则(OCP)
    如果程序中的一处改动就会产生连锁反应,导致一系列相关模块的改动,那么设计就具有僵化性的臭味。
    1.对于扩展是开放的。
    2.对于更改是封闭的。
    (抽象来实现)
    创建正确的抽象是要花费开发时间和精力的,同时,那些抽象也增加了软件设计的复杂性。
    遵循这个原则可以带来面向对象技术所声称的巨大好处(灵活性、可重用性以及可维护性)
    对于应用程序中的每个部分都肆意地进行抽象不是一个好主意。应该对程序中频繁变化的那些部分做出抽象。拒绝不成熟的抽象和抽象本身一样重要。

    Liskov替换原则
    子类型必须能够替换掉它们的基类型。如果新派生类的创建会导致我们改变基类,这就意味着设计是有缺陷的。也违反了OCP。

  • 相关阅读:
    Confluence 6 配置服务器基础地址示例
    (七)git分支的操作
    (六)最最基本的git操作
    (四)创建表、查看表、插入记录
    (三)数据库基本操作(创建、查询、修改、删除数据库)
    c++第九天
    (五)使用GitHub的前期准备
    (四)github之Git的初始设置
    (三)github之GIT的导入
    (二)github的价值意义篇
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3367306.html
Copyright © 2011-2022 走看看