<代码简约之美>总结
2018-01-27 23:42
232 查看
原书链接:http://www.ituring.com.cn/book/957
总结:
软件设计的目的:帮助他人,包括其他的程序员
变化定律:程序存在的越久某个功能需要做出改变的可能性就越大
缺陷定律:新增的缺陷和修改或新增的代码数量成正比
简洁定律:维护难度反比于代码的简洁程度,代码应当简单
测试定律:你对软件的了解程度等于你所做的测试的程度
语句总结:
程序员:化繁为简
任何设计都是由一个人来做主,而不是一个团队
软件设计的目标:帮助其他人,包括程序员
如果不添加也不修改任何代码就不会引入新的缺陷,所以在没有做好准备之前不要修改任何代码,除非代码真的有问题并且有证据和实例证明他有问题.
在理想状态下,任何程序里的任何信息都应该只出现一次.
过分拓展软件的用途是不可取的.
写软件时要搞清楚:真正要解决的问题是什么
在写代码的时候要注意:针对每个代码中的具体问题我都有具体的答案
作为程序员要有前瞻性,要保持持续竞争力,(即使在未来,代码也能帮助别人),值得注意的是,程序员并不能预测未来,所以应该在已知信息下做设计和决策,要使程序具有灵活性,但是不要做到以下几点过犹不及:
1.不要编写任何不必要的代码,即使这个代码将来有可能用到,bit rot
2.避免做到僵化设计(对未来假设太多,不仔细设计就编写代码)
3.不可过分追求通用性,可以采取渐进式开发设计:例如先设计加法,在设计减法,然后乘除,而不是一次性对加减乘除同时设计,即使我认为自己的大脑可以完成.
不要轻易造轮子除非以下几点:
1.需要的东西不存在
2.现在的轮子真的很烂,而且会把自己困住
3.现在的轮子无法满足我的要求
4.现在的轮子没有维护并且我也不能维护,比如没有源码
推倒重来要满足以下All才可以:
1.我已经做完了准确的评估
2.我有足够的时间
3.我比原来的设计师更高明
4.我做的每一步都有用户愿意测试
5.我有足够的资源兼顾原系统
软件设计方程式:
D=Vn+Vf/Ei+Em
V表示价值(当前价值和未来价值)
E表示成本(开发成本和维护成本)
其中当前价值和开发成本会趋于0
总结:
软件设计的目的:帮助他人,包括其他的程序员
变化定律:程序存在的越久某个功能需要做出改变的可能性就越大
缺陷定律:新增的缺陷和修改或新增的代码数量成正比
简洁定律:维护难度反比于代码的简洁程度,代码应当简单
测试定律:你对软件的了解程度等于你所做的测试的程度
语句总结:
程序员:化繁为简
任何设计都是由一个人来做主,而不是一个团队
软件设计的目标:帮助其他人,包括程序员
如果不添加也不修改任何代码就不会引入新的缺陷,所以在没有做好准备之前不要修改任何代码,除非代码真的有问题并且有证据和实例证明他有问题.
在理想状态下,任何程序里的任何信息都应该只出现一次.
过分拓展软件的用途是不可取的.
写软件时要搞清楚:真正要解决的问题是什么
在写代码的时候要注意:针对每个代码中的具体问题我都有具体的答案
作为程序员要有前瞻性,要保持持续竞争力,(即使在未来,代码也能帮助别人),值得注意的是,程序员并不能预测未来,所以应该在已知信息下做设计和决策,要使程序具有灵活性,但是不要做到以下几点过犹不及:
1.不要编写任何不必要的代码,即使这个代码将来有可能用到,bit rot
2.避免做到僵化设计(对未来假设太多,不仔细设计就编写代码)
3.不可过分追求通用性,可以采取渐进式开发设计:例如先设计加法,在设计减法,然后乘除,而不是一次性对加减乘除同时设计,即使我认为自己的大脑可以完成.
不要轻易造轮子除非以下几点:
1.需要的东西不存在
2.现在的轮子真的很烂,而且会把自己困住
3.现在的轮子无法满足我的要求
4.现在的轮子没有维护并且我也不能维护,比如没有源码
推倒重来要满足以下All才可以:
1.我已经做完了准确的评估
2.我有足够的时间
3.我比原来的设计师更高明
4.我做的每一步都有用户愿意测试
5.我有足够的资源兼顾原系统
软件设计方程式:
D=Vn+Vf/Ei+Em
V表示价值(当前价值和未来价值)
E表示成本(开发成本和维护成本)
其中当前价值和开发成本会趋于0
相关文章推荐
- <转>机器学习系列(9)_机器学习算法一览(附Python和R代码)
- <C/C++基础> 常用关键字总结
- <学习CSS>第三天笔记-css外观属性(颜色、行间距、对齐、首行缩进、字间距、单词间距 、颜色半透明、阴影)快捷方式、综合案例、引入CSS样式表(内部样式表、行内式、外部样式表)、三种样式表总结
- <<代码整洁之道(clean code)>>读书重点笔记
- Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码: <shape>
- js获得参数为<!DOCTYPE html>代码,并渲染展示成页面
- <总结> 部署 Kubernetes+Heapster+InfluxDB+Grafana 详解
- <h:outputText> value为html元素时~解析还是直接显示代码
- Web端 总结篇 <持续更新中>
- <<现代操作系统>>书本中的java实现生产者/消费者问题的代码改良
- <Netty>(二十七)(项目篇)Netty项目之客户端代码(maven+springboot+自定义注解+分库分表+Netty)
- <meta>标签总结
- <<精通iOS开发>>第14章例子代码小缺陷的修复
- 2016总结-->生活不只有技术和代码,还有诗和远方的田野。
- <a>标签中的href如何调用js代码
- 读<<编写可读代码的艺术>>总结
- <iOS 导航栏>第一节:导航栏透明方法实现代码
- <<梦断代码>>读书笔记
- <转>程序员,都去写一写前端代码吧
- <C/C++算法>贪心策略练习与总结