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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Nginx +keepalived
    iptables
    编译安装HTTPD 2.4.9版本
    Apache+lvs高可用+keepalive(主从+双主模型)
    LVS-HA
    corosync+pacemaker实现高可用(HA)集群
    NTP
    私人定制自己的linux小系统
    大数据处理-bitmap是个神马东西
    CSS3制作苹果风格键盘
  • 原文地址:https://www.cnblogs.com/jbwen/p/11071213.html
Copyright © 2011-2022 走看看