本文是《代码大全2》[1]的读书笔记。之前也读过一些代码整洁相关的书籍,但是随着时间推移,很多都遗忘了。因此,在开始读这本书之前,打算尝试做着记录,以便翻阅查询、回忆。首先,尝试一种方式,读5分钟,思考5分钟,整理复述或者是笔记5分钟。
第1章 软件构建 Software Construction
1、是什么?
构建活动主要是编码与调试,涉及详细设计、规划构建、单元测试、集成、集成测试等其他(软件开发)活动。
构建活动中的具体任务:
- 验证有关的基础工作已经完成,因此构建活动可以顺利地进行下去。
- 确定如何测试所写的代码。
- 设计并编写类(class)和子程序(routine)。
- 创建并命名变量(variable)和具名常量(named constant)。
- 选择控制结构(control structure),组织语句块。
- 对你的代码进行单元测试和集成测试,并排除其中的错误。
- 评审开发团队其他成员的底层设计和代码,并让他们评审你的工作。
- 润饰代码,仔细进行代码的格式化和注释。将单独开发的多个软件组件集成为一体。
- 调整代码(tuning code),让它更快、更省资源。
2、为何重要?
主要组成、核心、必不可少,效率差异,源代码是唯一精确描述
3、阅读建议
顺序阅读、主题阅读等
第2章 理解软件开发 Software Development
1、隐喻的重要性
隐喻可以帮助人们建立模型,生动地理解新的知识概念或者问题解释。但是也存在过度引伸从而造成误导。
2、如何使用隐喻
隐喻就像是探照灯,是一种启发式方法。不像算法一样,是直接明确的路线图。至于怎么用,作者讲的比较高深,不甚理解,摘录如下。
那么该如何使用软件中的隐喻呢?应该用它来提高你对编程问题和编程过程的洞察力:用它来帮助你思考编程过程中的活动,想象出更好的做事情的方法。你不可能看到一行代码并说它违反了本章所描述的某个隐喻。但随着时间的流逝,人们会发现,相对于不善运用隐喻的人来说,那些使用隐喻来照亮自己的软件开发过程的人,他对于编程的理解会更好,并且能够更快地写出更好的代码。
3、常见的软件隐喻
还没细看
- Software Penmanship:Writing Code 软件中的书法:写作代码
- Software Farming:Growing a System 软件的耕作法:培植系统
- Software Oyster Farming:System Accretion 软件的牡蛎养殖观点:系统生长
- Software Construction:Building Software 软件构建:建造软件
- Applying Software Techniques:The Intellectual Toolbox 应用软件技术:智慧工具箱
第3章 前期准备 Upstream Prerequisites
1、前期准备的重要性
- 初期-准备工作
- 中期-构建实践
- 末期-系统测试
准备工作中心目标是降低风险,集中改进需求分析和项目规划。
准备不周全的原因:技能缺乏、知而不行、来自管理者的压力。
论据讲述:Appeal to Logic、Appeal to Analogy、Appeal to Data
2、软件类型
发现错误的时间要尽可能接近引入该错误的时间。
序列开发开发和迭代开发
3、问题定义的先决条件(怎么判断)
从客户的角度描述问题,而不是解决方案。除非是计算机相关的问题,采用术语陈述比较恰当。
4、需求的先决条件(怎么判断)
理由:无需猜测、避免争论、减少变更
需求稳定、核对表、制定流程、演进原型开发等等
5、架构的先决条件
架构的典型组成部分如下列出,作者对每个话题都进行一些描述介绍。
- Program Organization 程序组织
- Major Classes 主要的类
- Data Design 数据设计
- Business Rules 业务规则
- User Interface Design 用户界面设计
- Resource Management 资源管理
- Security 安全性
- Performance 性能
- Scalability 可伸缩性
- Interoperability 互用性
- Inetrnationalization/Localization 国际化/本地化
- Input/Output 输入输出
- Error Processing 错误处理
- Fault Tolerance 容错性
- Architectural Feasibility 架构的可行性
- Overengineering 过度工程
- Buy-vs-Build Decisions 关于“买”还是“造”的决策
- Reuse Decisions 关于复用的决策
- Change Strategy 变更策略
- General Architectural Quality 架构的总体质量
核对表
6、前期准备时长
一般说来,一个运作良好的项目会在需求、架构以及其他前期计划方面投入10%~20%的工作量和20%~30%的时间(McConnell1998,Kruchten 2000)。
在本章的最后,作者给出一些关于“需求”、“软件架构”、“软件开发过程”的书籍。
参考
- ^代码大全2 https://baike.baidu.com/item/%E4%BB%A3%E7%A0%81%E5%A4%A7%E5%85%A8/9962473?fr=aladdin