《程序员修炼之道——从小工到专家》阅读笔记

提供各种选择,不要找蹩脚的借口。

 

不要容忍破窗户。

 

无视用户的需求,一味地给程序增加新特性,或是一次又一次润饰0代码,这不是有职业素养的做法。我们不是在提倡慌张:许诺不可能兑现的时间标度,为赶上最后期限而削减基本的工程内容,这些同样不是有职业素养的做法。

 

不要把技术鸡蛋放在一个篮子里。

 

持续的投入非常重要。

 

DRY -Don't Repeat Yourself

 

Make ItEasy to Reuse

 

EliminateEffects Between Unrelated Things

 

错误在于假定决策是浇筑在石头上的——同时还在于没有为可能出现的意外事件做准备。

要把决策视为写在沙滩上的,而不要把它们刻在石头上。大浪随时可能到来,把它们抹去。

 

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

 

Estimateto Avoid Surprises

 

Use thePower of Command Shells

 

Use aSingle Editor Well

 

进步远非由变化组成,而是取决于好记性。不能记住过去的人,被判重复过去。

 

AlwaysUse Source Code Control

 

Fix theProblem, Not the Blame

 

You can'tWrite Perfect Software

 

要崩溃,不要破坏

 

If ItCan't Happen , Use Assertions to Ensure That It Won't

 

UseExceptions for Exceptional Problems

 

FinishWhat You Start

  • 关于资源分配

 

MinimizeCoupling Between Modules

(使模块之间的耦合减至最少)

 

Configure,Don't Integrate

(要配置,不要集成)

 

PutAbstractions in Code ,  Details inMetadata

(把抽象放进代码,细节放进元数据)

 

AnalyzeWorkflow to Improve Concurrency

(分析工作流,以改善并发性)

 

饥饿的消费者模型

-用一些独立的消费者任务和一个集中式工作队列取代中央调度器。各个消费者任务从工作队列中抓取意向,并对其进行处理。当各个任务完成其工作时,就回到队列抓取下一项。这样,如果任何特定的任务陷入停顿,其他任务可以利用这一空闲,并且各个组件都可按自己的步伐前进。每个组件都在时间上解除了与其他组件的耦合。

 

DesignUsing Services

(用服务进行设计)

 

AlwaysDesign for Concurrency

(总是为并发进行设计)

 

发布/订阅 观察者模式

可以按照对等方式使用,也可以使用“软件总线”,甚至可以紧急广播给全局

 

SeparateViews from Models

(使视图与模型分离)- MVC

 

Don'tProgram by Coincidence

(不要靠巧合编程) 不知道代码为什么失败,因为一开始就不知道为什么能工作

 

Estimatethe Order of Your Algorithms

(估算你的算法的阶)-如果你不能确定代码需要多少时间,或是使用多少内存,就试着运行它,变化输入纪录的数目,或可能影响运行时间的无论什么东西。你应该很快就能了解到曲线的形式。随着输入量的增大,它是向上弯曲、是直线还是保持平直?三个或四个点就应该能告诉你答案。

 

Test YourEstimates

 

RefactorEarly, Refactor Often

 

Don't UseWizard Code You Don't Understand

(不要使用你不理解的向导代码)

 

完美,不是在没有什么需要增加,而是在没有什么需要去掉时刻达到的。

 

Don'tGather Requirements - Dig for them

 

找出用户为何要做特定事情的原因、而不只是他们目前做这件事的方式。

开发必须解决他们的商业问题,而不只是满足他们陈述的需求。

 

Work witha User to Think Like a User

 

需求不是架构。需求不是设计,也不是用户界面。需求是需要。

 

AbstractionsLive Longer than Details

 

Use aProject Glossary

(使用项目词汇表)

 

Listen toNagging Doubts - Start When You're Ready

(倾听反复出现的疑虑——等你准备好再开始)

 

Don't UseManual Procedures

(不要使用手工流程)

 

TestEarly. Test Often. Test Automatically.

 

TestState Coverage, Not Code Coverage.

 

Gently Exceed Your Users' Expectations.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值