• 敏捷软件开发--敏捷开发原则


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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    【题解】P2262 [HNOI2004]FTP服务器
    关于大模拟
    CodeForces 666E Forensic Examination
    Bzoj3233 [Ahoi2013]找硬币
    Bzoj4350 括号序列再战猪猪侠
    UOJ#31 【UR #2】猪猪侠再战括号序列
    UOJ#21 【UR #1】缩进优化
    51nod1667 概率好题
    [CodeChef
    51nod1245 Binomial Coefficients Revenge
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3367306.html
Copyright © 2020-2023  润新知