读书笔记2014第4本:程序员修炼之道-从小工到专家(第二章)

简介:

《程序员修炼之道-从小工到专家》是一本1999年写的老书,但15年之后,书中的许多道理依然没变,时不时拿出一章咀嚼一下仍有许多可回味之处。

第二章 注重实效的途径

7、重复的危害

开发一个软件,大量的时间都会用在维护上,牢记DRY原则(不要重复你自己Don't Repeat Yourself)

系统中的每一项知识都必须具有单一、无歧义、权威的表示。

8、正交性

就是不相依赖性和解耦性。

正交性使问题局部化,一个模块的问题不会扩散到其它模块;促进复用,便于与其它组件组合在一起;使系统更健壮;更利于测试。

项目团队的设置也有正交性的问题,尽量不要让2个团队的责任重叠。

面向对象的技术虽有许多好处,但也非常容易乱用,从而制造出非正交的代码来。

9、可撤消性

10、曳光弹

就是敏捷开发的理念,要即时反馈。

曳光代码与原型系统不是一回事,曳光弹是一个可以运转的整体,虽然功能不全;而原型通常只是一个界面,原型代码通常要丢弃。

11、原型与便笺

原型制作是一种学习经验。其价值并不在于所产生的代码,而在于所学到的经验教训。

12、领域语言

哪些时候需要给程序设计一种领域语言?我写的程序里还没有像VB自动化式的功能需求。

13、估算

估算一个软件项目到底要花多长时间来完成是一个不可能完成的任务。

看看这篇帖子提到的3种方法:

1)想要搞清楚一个事情需要多少时间完成,这最好的方法是找一个程序员已经完成的、相似的项目。对一些简单的网站和应用来说非常有效,或者那些使用标准CRUD的项目也是适用。当项目小且简单时这种方法最好用。这种方法可以用在软件1.0版本时,但以后的版本就不行了,因为这时你跟相参照的项目开始慢慢的产生差异,这时写的代码是你以前没有写过的。 
2)我的好朋友、并且是以前的同事John Walker(不是这个John Walker)喜欢用这种方法。把项目拆解成最小的任务。然后记录完成每个任务你认为可能需要多少小时、天、周、月。遵循这种原则,如果一个任务需要几小时,就是算成一天,如果需要数天,就是算成一周,如果是数周,就算成一月。如果超过一个月,那你就无法知道需要多少时间了,或你根本不知道要做什么。 
3)我有自己的预估方法,但事实上跟John的把任务拆分成最小的子任务的方法非常相似。我是以最坏的情况下每个最小单元需要的完成时间为标准。汇总,然后乘以4。再向上取舍到最近的素数,就算是对我的这种没谱的方法的讽刺吧。

 

第一章 注重实效的哲学
第二章 注重实效的途径
第三章 基本工具
第四章 注重实效的偏执
第五章:弯曲或折断
第六章:当你编码时
第七、八章 

本文转自申龙斌的程序人生博客园博文,原文链接:http://www.cnblogs.com/speeding/p/3662851.html,如需转载请自行联系原作者

http://www.cnblogs.com/speeding/ 

相关文章
|
Rust 数据可视化 安全
Rust性能分析工具概览:perf、flamegraph 与其他
Rust作为一种高性能、内存安全的编程语言,在构建大型系统和微服务时备受青睐。然而,优化Rust程序的性能需要有效的工具。本文将对Rust中常用的性能分析工具进行介绍,包括perf、flamegraph等,并探讨它们如何帮助开发者定位和解决性能瓶颈。
1606 1
|
安全 网络协议 网络安全
|
缓存 前端开发 JavaScript
Webpack 4 和 Webpack 5 区别?
【10月更文挑战第23天】随着时间的推移,Webpack 可能会继续发展和演进,未来的版本可能会带来更多的新特性和改进。保持对技术发展的关注和学习,将有助于我们更好地应对不断变化的前端开发环境。
|
安全 网络安全 数据安全/隐私保护
HTTP与HTTPS协议区别及应用场景
在互联网高速发展的今天,HTTP与HTTPS作为数据传输的基石,作用至关重要。HTTP允许客户端与服务器间传输超文本文档,但其数据传输过程未加密,存在安全隐患;HTTPS则在此基础上加入了SSL/TLS协议,实现了数据加密传输,增强了安全性,广泛应用于电子商务、网上银行、政府网站及社交媒体平台等涉及敏感信息传输的领域,有效保护了用户隐私和数据安全。随着网络安全意识提升,HTTPS正逐渐成为主流。
|
消息中间件 监控 API
深入浅出微服务架构设计原则
在软件开发的宇宙中,微服务如星辰般璀璨,引领着分布式系统的航向。本文将带你穿梭于微服务的星系,探索其背后的设计哲学与实践精髓,从服务边界的划分到数据一致性的保障,再到服务的通信与协作,我们将一同揭开微服务架构高效、可扩展且灵活的秘密。
349 4
|
存储 网络协议 安全
《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(1)-初识Wireshark
【2月更文挑战第1天】《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(1)-初识Wireshark
1152 3
|
存储 安全 Linux
【探索Linux】P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
【探索Linux】P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )
541 0
|
IDE 编译器 开发工具
善用 vs 中的错误列表和输出窗口,高效查找 C++ 多工程编译错误
善用 vs 中的错误列表和输出窗口,高效查找 C++ 多工程编译错误
|
Go
动态并发控制:sync.WaitGroup的灵活运用
动态并发控制:sync.WaitGroup的灵活运用
409 0
动态并发控制:sync.WaitGroup的灵活运用
|
定位技术 C++ Python
C++一个函数返回两个或更多个返回值的方法
C++一个函数返回两个或更多个返回值的方法
458 1