第一章:欢迎进入软件构建的世界

  • 软件构建的定义: 涵盖编码与调试、单元测试、规划构建、集成等,未给出明确的定义。

  • 软件构建的重要性: 是编写大型项目中最关键、不可或缺的一部分。

第二章:用隐喻更充分地理解软件开发

  • 隐喻的灵活性: 不是明确的标准,而是微妙的启发,不应受隐喻限制而远离“不符合”隐喻的方法。

  • 好的隐喻1: 将代码构建比作珍珠的生长(accretion),强调从外部吸收材料逐渐成长的过程,与《程序员修炼之道》中的“曳光弹”思想一致。

  • 好的隐喻2: 将代码构建比作建筑,强调初期需精心设计框架,但对于代码的设计不应过于细致,始终保持解耦,细节可在后期更换。

  • 项目需求的差异: 不同项目需求可能需要截然不同的构建方式。

第三章:三思而后行:前期准备

  • 前期准备的重要性: 数据显示,引入错误到发现错误的时间越长,修正错误的成本越大。充分的前期准备可在需求和设计层面阻止错误的产生。

  • 软件的分类: 商业系统、使命攸关的系统、使命攸关的嵌入式系统。对于商业系统,建议采用敏捷、增量式的开发方式,尽管书中提到计划、管理、需求、设计、测试等方面可以相对非正式,但作者对此提出了异议,认为即使是商业开发,也应有相对正式的计划管理、形式化需求和经常性测试。

  • 迭代式开发 vs. 序列式开发: 根据项目特点选择。前期准备可以显著降低两种开发方式的成本。

  • 问题定义与需求: 使用自然语言,从用户的角度定义问题。明确的需求可避免程序员误解和开发者间的争论。

  • 处理需求变更的方法: 经常评估需求质量,确保每个人了解变更需求的代价,建立变更控制程序,采用适应变更的开发方法。

  • 架构的重要性: 架构在书中没有过多涉及,但作者认为它非常重要,提出了架构的典型组成要素。

第四章:关键的“构建”决策

  • 选择编程语言: 熟悉的语言提高生产力,高级语言相较低级语言生产力更高。

  • 编程约定: 包括变量、类、函数命名、代码格式、文档等。

  • 技术浪潮中的位置: 在浪潮后期更容易稳定持续地编写新功能,而在浪潮前期需要花费更多时间应对不完善的技术。

  • Working in a language vs. working into a language: 对一种语言不够了解可能会受到语言本身逻辑的限制;了解一种语言的基础上,确定使用语言及使用方式更为自主。

  • 选择构建方法: 如编码约定、团队工作方式、质量保证措施、工具等。

创造高质量的代码

第五章:软件构建中的设计

  • 设计的限制: 是一个复杂而险恶的问题,需要通过解决才能明确定义。

  • 设计的不确定性: 是启发式、自然的过程,涉及多次错误和修正。

  • 管理复杂度的方法: 将任何人在同一时间需要处理的复杂度减小到最小,避免无谓的增长。

  • 设计与需求的权衡: 针对设计和需求的多样性进行取舍。

posted on   XiSoil  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2022-09-09 自我检讨



点击右上角即可分享
微信分享提示