zoukankan      html  css  js  c++  java
  • 《程序员修炼之道——从小工到专家》阅读笔记*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

     

    在你的作品上签名

     

  • 相关阅读:
    2015年蓝桥杯省赛A组c++第3题
    2015年蓝桥杯省赛A组c++第1题
    算法学竞赛常用头文件模板
    Android+Tomcat通过http获取本机服务器资源
    Ubuntu16.04LTS卸载软件的命令
    20个有趣的Linux命令
    Ubuntu16.04开机蓝屏问题解决
    Ubuntu启动时a start job is running for dev-disk-by延时解决
    Cookie与Session
    JS 闭包
  • 原文地址:https://www.cnblogs.com/Aming-/p/12079528.html
Copyright © 2011-2022 走看看