在知乎上看到的,作为一名程序员必须要看的书,我发现这本书刚好我们学校的图书馆里面有,让我借到了,我就开始了阅读。读完之后感觉颇深,写下这篇博客进行记录。
整本书有270多页。我就把我认为好的记录下来,从目录的顺序说吧。
整本书,整体围绕着一个中心,注重实效的程序员。
第一:是注重实效的哲学。在你写代码的过程中,会遇到代码的许多问题,开始是我的源码让猫给吃了,说的的是要负起自己对自己代码的责任,软件中间有的错误要立马解决,不然会越变越大,导致无法挽回的错误,这里有个石头汤与煮青蛙的故事,做程序让他们预见自己未来,你就能聚集在你周围。
be a catalyst for change
做变化的催化剂。
要做出足够好的软件,就要让你的用户参与权衡,知道何时止步,因为程序它不可能完美。
程序员要懂得投资,投资自己的知识资产,经营你的资产:有以下几点要素:
1.定期投资。2.多元化。3.管理风险。4.低买高卖。5.重新评估和平衡。
目标有:
1.每年至少学习一种新语言。
2.每季度阅读一本技术书籍。
3.也要阅读非技术书籍(要满足人的需要)。
4.上课。
5.参加本地用户组织。
6.试验不同的环境。
7.跟上潮流。
8.上网。
然后就是交流,我们需要在许多层面上进行交流。
第二:注重实效的途径
重复的危害,这里有一个很重要的准则,系统中每一项知识都必须具有单一、无歧义、权威的表示。称之为dry
do not repeat yourself
正交性,就是不依赖性,不耦合。
可撤销性,对于变动可以改变。
曳光弹,快速做出来,进行实验,用来进行参考,
原型与便笺。
语言的界限就是一个人世界的界限。
计算机语言会影响你思考的问题的方式,以及你看待交流的方式,领域的语言。
估算,以避免发生意外。
estimate to avoid surprise
第三:基本工具
我把目录写下来,大家自己领悟。
1.纯文本的威力。
2.shell游戏。
3.强力编辑(用一种编辑器用熟)
4.源码控制
5.调试
6.文本操作。
7.代码生成器。
第四:
1.按合约设计
2.死程序不说慌,让程序有错误就立马停掉。
3.断言式编程。
4.何时使用异常
use exceptions for exceptiona problems
将异常用于异常的问题。
5.怎么配平资源。
finished what you start
要有始有终
第五:弯曲,或折断
1.解耦与得墨忒耳法则
实际上就是使偶和减小到最少,函数的得墨忒耳法则使任何程序中的模块之间的耦合减小到最少,尽可能编写遵守墨忒耳法则的“羞怯的代码”
2.元程序设计,动态配置
configure do not integrate
要配置,不要集成。要用元数据描述应用的配置选项:调谐参数,用户偏好,安装目录。元数据就是关于数据的数据。
3.时间耦合,analyze workflow to improve concurrency
分析工作流,以改善并发性。
4.它只是视图
separate views from models 使视图与模型分离。
5.黑板进行推理,
use blackboards to coordinate workflow
用黑板协调工作流。
第六:当你编码时
1.当你编码时,不要使用你不熟悉的东西编程,不要靠巧合编程。
2.算法速率。这个大家都懂。
3.重构,应在何时进行重构
当你遇到绊脚石——代码不再合适,你注意到有两样东西其实应该合并或是其他任何对你来说是错误的东西,不要对改动犹豫不决。应该现在就做,有以下几种特征就应该重构:
1.重复。2.非正交的设计。3.过时的知识。4.性能。
自动重构参考
4.易于测试的代码
5.邪恶的向导。
do not use wizard code you do not understand
不要使用你不理解的代码
第七:在项目开始之前
1.需求之坑
去挖掘需求
work with a user to think like a user
与用户一同工作,以像用户一样思考。
2.解开不可能解开的谜题
一定有更容易的方法。
do not think outside the box- find the box
不要在盒子外面思考———要找到盒子
3.等你准备好
listen to nagging doubts- start when you are ready
倾听反复出现的疑虑——等你准备好再开始。
4.规范陷阱
如果你受到规定过细的设计的约束,你甚至不可能发现这些机会。
5.圆圈与箭头
不要受形式主义的影响。
Don’t Be a Slave to Formal Methods
不要做形式方法的奴隶。
第八:注重实效的项目
1.注重实效的团队
不要留破窗户。交流。不要重复你自己。煮青蛙。
这些是关键词,自己可以体会。
2.无处不在的自动化
一切都要自动化
Don’t Use Manual Procedures
不要使用手工流程
3.无情的测试
编一点,测一点。
4.全都是写
Treat English as Just Another Programming Language
把英语当又一种编程语言。
把文档建在里面,不要放在外面,注释应该讨论为何要做某事、他的目的和目标。代码已经说明了它是怎样完成的。所以再为此加上注释是多余的——而且违反了DRY
5.极大的期望
说的主要意思可以用下面一句话概括。
Gently Exceed Your User’Expectations
温和的超出用户的期望。
6.傲慢与偏见
这也有几句话
Sigh Your Work
在你的作品上签名
我们想要看到对所有权的自豪。“这是我编写的,我对自己的工作负责”。
这是花了一下午写的,希望有所帮助。