zoukankan      html  css  js  c++  java
  • 面向使用的软件设计阅读笔记01

    有些概念性的说法可能理解不是很到位,

    好比复杂性的组成因素的定义是:依赖性是指模块无法独立于其他模块而被理解。

    模糊性是指在重要信息不明确的情况下这往往是因为缺乏文档。复杂性是由模糊性和依赖性造成的。

    复杂性管理为什么如此具有挑战性?这是因为复杂性是递增的,前面做出的每一个决策,都可能导致后面的设计越来越复杂。

    为了避免复杂性不断递增,建议区分战略性编程和战术性编程。

    战术性编程是专注于让代码能够跑起来,但这使得它几乎不可能产生好的系统设计。

    相反,战略编程会转移目标重心。战略性编程是意识到光有能运行的代码是不够的。

    最主要的目标应该是有一个不仅能够运行,还能解决问题的好的系统设计。

    理想情况下,假如你从一开始就考虑到更改系统设计时,会带来的变化,那么当你完成每个变更时,系统就会变成你一开始预想的那个结构

    很多人会反对这种对抽象的关注,认为它没有什么太大的用处,因为你并不需要它,他会认为一个好的设计很快就能得到回报。

    如果能把复杂性隔离在一个模块,不与其他模块相关联,就达到了消除复杂性的目的。

    而管理复杂性最重要的方法是从接口转移到实现中:模块是接口和实现。解决方案就是“定义不存在的错误”,即设计不会出现Bug的接口。

    这可能就涉及到大型软件开发设计了,虽然不是很理解,但感觉是有实际效用的。

  • 相关阅读:
    docker学习记录
    TCP/IP基础介绍
    JS对select操作
    js中删除table里所有行
    端口
    js中定时器的使用
    ASP.NET程序中常用的三十三种代码
    NHibernate学习(转)
    条面向对象设计的经验原则(转)
    客户端等select和input控件
  • 原文地址:https://www.cnblogs.com/jbwen/p/11071213.html
Copyright © 2011-2022 走看看