本书讨论了软件设计的一些规则,这些规则如下:

  1. 软件的目的是帮助他人

  2. 软件设计的方程公式:
    D = (Vn + Vf )/ (Ei + Em)
    其中:

    • D表示变化的何以程度(可行性);
    • Vn表示当前价值;
    • Vf表示未来价值;
    • Ei表示开发成本
    • Em描述维护成本

    这是软件设计的主要法则。随着时间的推移,这个方程式简化为:
    D = Vf / Vm
    也就是说,相比较降低开发成本,更重要的是降低维护成本。

开发软件的目的不是为了赚钱,也不是为了炫技,是为了帮助他人。只有这样你才会全心全意的为用户着想,站在用户的角度考虑问题。为了能持续的帮助他人,需要降低软件的开发和维护成本。相比降低开发成本,降低维护成本更重要,维护成本随着时间的推移会逐渐的增加。

变化规律:程序存在的时间越久,他的某个部分需要变化的可能性越大。

缺陷定律:程序出现缺陷的可能性,正比于你对它修改的程度。

简洁定律:软件的任何一部分的维护难度,正比于该本分的简洁程度。

测试定律:你对软件行为的了解程度,等于你真正测试它的程度。

没有经过严格测试的软件

目前公司开发的所有项目,都是开发人员根据项目经理的需求,自己进行开发,有些项目甚至没有原型,开发人员只能根据自己的理解来编写代码。结果可想而知,完成的功能经常不完全是所需要完全的功能,这就造成开发人员频繁的去改动代码,一来公司的大部分的开发人员都是新手,编写的代码千奇百怪,有些甚至是直接从网上复制过来的,要排版没版本,代码写的一团糟。经过多次修改后,代码完全失控了,到处都是无用的代码。更可笑的是,公司研发编写的底层代码,也是一个尿性,代码极其臃肿,模块就有二三十个,每次开启一个新的项目,都是把研发部写的底座拿过去搭建环境,在这个的基础上进行开发,原来的底层都这么烂了,编写的代码还能好到哪里去去呀!!!

而且不管是这些在建的项目,还是研发部的底层代码,都是没有经过严格测试的,没有单元测试。所谓的测试,也只是派人在界面上去点一点,测试的情况完全不理想。经常有些功能,在使用的时候发现,还有很多的问题。关键是这些人不是专业的测试,他们只是实施人员。。。

说起来都是泪啊,最终苦的还是开发,都是开发的锅。。。

转载于:https://www.cnblogs.com/zhangfengxian/p/10645287.html

《简约之美:软件设计之道》总结相关推荐

  1. STL源码剖析学习七:stack和queue

    STL源码剖析学习七:stack和queue stack是一种先进后出的数据结构,只有一个出口. 允许新增.删除.获取最顶端的元素,没有任何办法可以存取其他元素,不允许有遍历行为. 缺省情况下用deq ...

  2. 《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法1

    最近在看侯捷的<STL源码剖析>,虽然感觉自己c++看得比较深一点,还是感觉还多东西不是那么明白,这里将一些细小的东西或者概念记录一下. 有些东西是根据<C++编程思想>理解的 ...

  3. 《STL源码剖析》学习--6章--_rotate算法分析

     最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. <STL源码剖析>学习--6章--random access ite ...

  4. 《STL源码剖析》学习--6章--power算法分析

    最近在看侯捷的<STL源码剖析>,其中有许多不太明白之处,后经分析或查找资料有了些理解,现记录一下. 6章--power算法分析 书本中的算法如下所示: template <clas ...

  5. STL源码剖析——P142关于list::sort函数

    在list容器中,由于容器自身组织数据的特殊性,所以list提供了自己的排序函数list::sort, 并且实现得相当巧妙,不过<STL源码剖析>的原文中,我有些许疑问,对于该排序算法,侯 ...

  6. STL源码剖析---红黑树原理详解下

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/7760584       算法导论书上给出的红黑树的性质如下,跟STL源码 ...

  7. STL源码剖析面试问题

    当vector的内存用完了,它是如何动态扩展内存的?它是怎么释放内存的?用clear可以释放掉内存吗?是不是线程安全的? vector内存用完了,会以当前size大小重新申请2* size的内存,然后 ...

  8. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  9. STL源码剖析 数值算法 copy 算法

    copy复制操作,其操作通过使用assignment operator .针对使用trivial assignment operator的元素型别可以直接使用内存直接复制行为(使用C函数 memove ...

  10. STL源码剖析 算法开篇

    STL源码剖析 算法章节 算法总览_CHYabc123456hh的博客-CSDN博客 质变算法 质变算法 - 会改变操作对象的数值,比如互换.替换.填写.删除.排列组合.分隔.随机重排.排序等 #in ...

最新文章

  1. Linux系统性能分析:内存 优化
  2. Edison与Arduino通过USB对接通信
  3. [汇编语言]-第四章第1个程序
  4. python list转map_Python 进阶之术 Map Filter Reduce
  5. ktv 上传图片 1218
  6. AspectJ声明式事务配置
  7. IDEA中terminal中执行git log中文乱码
  8. Linux多线程工作笔记0002---C语言函数前面的*是什么意思
  9. 一个基于protobuf的极简RPC
  10. 数仓 调度_【数仓开发-数仓概念篇】3.3 报表vs数据可视化vs ETL
  11. CTC算法论文阅读笔记:Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurren
  12. html 打开资源管理器,资源管理器怎么打开 教你如何快速打开资源管理器
  13. 【股票】融资融券基本概念
  14. IDEA learn 快捷键使用记录 --自用
  15. 10G SR光模块取消ER调试可行性分析
  16. HDU - 4747 Mex(线段树)
  17. SwiftUI AVKit 之合并和叠加音频mp3 并输出
  18. Kubernetes 安全专家(CKS)必过心得
  19. swiper滑到最后一页交互
  20. 使用el-dialog时,报错“Unknown custom element:<el-dialog> did you register the component correctly?...make

热门文章

  1. PM常用软件工作平台
  2. Redis6.0为什么引入多线程
  3. 数字图像处理--梯度倒数加权平滑法
  4. pycharm pip超时 无法下载package 更换源
  5. 区块链 solidity 快排
  6. html浏览xsd,XSD 简易元素
  7. Leetcode之最长公共前缀
  8. Mybatis框架中${}和#{}的区别
  9. html在p中加空格,HTML基础 p 多个空格和换行都算一个空格
  10. 崩了导致代码都乱了_抖音崩了?别慌,你的快乐还在