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

这是最后一次的读书笔记了。

学习完整本书之后,收获颇丰。每一个tip拿出来都可细细咀嚼。

比如在读第六章,我们常常使用向导生成漂亮的界面和背后的大量代码,只要再加入具体的应用功能,软件就可以交付了,但这往往是愚弄自己,除非我们真的理解那些替我们制作的代码,否则就是在靠巧合编程。向导是一条“单行道”——它们为你制作代码,然后就走了,如果它们制作的代码不完全正确,或者情形变了,需要改变代码,那么就只能靠我们自己了。我们不是在反对向导,但如果你真的使用向导,就要理解它制作出的所有代码,这样才能很好地控制并维护自己的应用。

虽说除了依赖我们不理解的向导,我们也在依赖其它很多不理解的事物,比如集成电路的量子力学、处理器的中断结构、用于进程调度的算法、系统提供的API等。但向导与它们是有区别的,因为向导生成的代码变成了我们应用的组成部分,它们一行一行地与我们编写的功能交织在一起,最后它不再是向导的代码,而变成了我们自己的代码,没有人应该制作自己不完全理解的代码。所以不要使用你不理解的向导代码。

 

最后一章提到了代码的注释:

  • 代码中的注释

注释应该讨论为何要做某事、它的目标等。代码已经说明了它是怎样完成的,所以再为此加注释是多余的,而且也违反了DRY原则。

注释中也适合记录工程上的权衡、为何要做某些决策、放弃了哪些替代方案等等。

变量名应该精心选择,并且有意义。匈牙利命名法(包括了变量类型信息)在面向对象的系统中并不合适。

比无意义的名称更糟糕的是误导人的名称。

代码应该有代码作者、版权信息等内容,这些可以让编辑器自动生成。

 

 

 

 

剩下的tip

 

 

 

Tip 36:

 

Minimize Coupling Between Modules

 

使模块的之间的耦合减少

 

Tip 37:

 

Configure, Don’t Integrate

 

要配置, 不要集成

 

Tip 38:

 

Put Abstractions in Code, Details in Metadata

 

将抽象放进代码, 细节放进元数据

 

Tip 39:

 

Analyze Workflow to Improve Concurrency

 

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

 

Tip 40:

 

Design Using Services

 

用服务进行设计

 

Tip 41:

 

Always Design for Concurrency

 

总是为并发设计

 

Tip 42:

 

Separate Views from Models

 

使视图与模型分离

 

Tip 43:

 

Use Blackboards to Coordinate Workflow

 

用黑板协调工作流

 

Tip 44:

 

Don’t Program by Coincidence

 

不要靠巧合编程

 

Tip 45:

 

Estimate the Order of Your Algorithms

 

估算你算法的阶

 

Tip 46:

 

Test Your Estimates

 

测试你的估算

 

Tip 47:

 

Refactor Early, Refactor Often

 

早重构, 常重构

 

Tip 48:

 

Design to Test

 

为测试而设计

 

Tip 49:

 

Test Your Software, or Your Users Will

 

测试你的软件, 否则你的用户就得测试

 

Tip 50:

 

Don’t Use Wizard Code You Don’t Understand

 

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

 

Tip 51:

 

Don’t Gather Requirements — Dig for Them

 

不要搜集需求 — 挖掘它们

 

Tip 52:

 

Work with a User to Think Like a User

 

与用户一同工作, 以像用户一样思考

 

Tip 53:

 

Abstractions Live Longer than Details

 

抽象比细节活得更长久

 

Tip 54:

 

Use a Project Glossary

 

使用一个项目词汇表

 

Tip 55:

 

Don’t Think Outside the Box — Find the Box

 

不要在盒子外面思考 — 要找到盒子

 

Tip 56:

 

Listen to Nagging Doubts — Start When You’re Ready

 

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

 

Tip 57:

 

Some Things Are Better Done than Described

 

对有些事情”做”胜于”描述”

 

Tip 58:

 

Don’t Be a Slave to Formal Methods

 

不要做形式的奴隶

 

Tip 59:

 

Expensive Tools Do Not Produce Better Designs

 

昂贵的工具不一定能制作出更好的设计

 

Tip 60:

 

Organize Around Functionality, Not Job Functions

 

围绕功能, 而不是工作职务进行组织

 

Tip 61:

 

Don’t Use Manual Procedures

 

不要使用手工流程

 

Tip 62:

 

Test Early. Test Often. Test Automatically.

 

早测试, 常测试, 自动测试.

 

Tip 63:

 

Coding Ain’t Done ‘Til All the Tests Run

 

要到通过全部的测试, 编码才算完成

 

Tip 64:

 

Use Saboteurs to Test Your Testing

 

通过”蓄意破坏”测试你的测试

 

Tip 65:

 

Test State Coverage, Not Code Coverage

 

测试状态覆盖, 而不是代码覆盖

 

Tip 66:

 

Find Bugs Once

 

一个 bug 只抓一次

 

Tip 67:

 

Treat English as Just Another Programming Language

 

把英语当作又一种编程语言

 

Tip 68:

 

Build Documentation In, Don’t Bolt It On

 

把文档建在里面, 不要栓在外面

 

Tip 69:

 

Gently Exceed Your User’s Expectations

 

温和地超过用户的期望

 

Tip 70:

 

Sign Your Work

 

在你的作品上签名

 

你可能感兴趣的:(《程序员修炼之道——从小工到专家》阅读笔记*part6)