首页 > 其他分享 >3月代码大全阅读笔记3

3月代码大全阅读笔记3

时间:2023-05-01 13:23:31浏览次数:39  
标签:需求 架构 隐喻 代码 笔记 开发 构建 大全

之所以阅读这本书,是想在阅读风格较为轻松的《程序员修炼之道》之后阅读一本更细致、更严肃的“进阶”读物。

  • 第一部分 打好基础

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

软件构建的定义:包括编码与调试、单元测试、规划构建、集成等,没有给出一个明确的定义。

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

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

对软件开发地隐喻不是明确的标准,而是微妙的启发,所以不要被隐喻限制而远离“不符合”隐喻的方法。可以将不同的隐喻结合启发自己构建代码。

一个好的隐喻是将代码构建比作珍珠的生长(accretion),从外在吸收材料并慢慢成长的过程。代码的构建应该是增量式的,从一个基础的框架开始每次增加一点点。假如一开始的代码没有完整的功能,也应该用dummy class搭起一个基本的框架,然后逐一替换成细致可用的代码。这个思想与《程序员修炼之道》中的“曳光弹”思想一致。

另一个好的隐喻是将代码构建比作建筑。

首先,越大的架构修正错误的消耗越大,所以需要从一开始就仔细地设计框架。然而对代码的设计不应该过于细致,应该始终保持解耦,细节随时可以在后期更换。

另外,代码构建可以引用第三方库,也可以根据需要自己编写库。

最后,不同的项目需求所需要采取的构建方式可以是截然不同的。

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

根据数据,引入错误到发现错误的时间越长,修正错误的消费越大。进行充分的前期准备可以将需求、设计上的错误扼杀于萌芽。

软件大致分三种:商业系统、使命攸关的系统、使命攸关的嵌入式系统。

我们的项目属于商业系统,推荐采用敏捷的、增量式的开发,计划、管理可以非正式,需求可以非形式化,设计可以和编码同时进行,测试可以较少。

我有一点异议:尽管是商业开发,也应该有较正式的计划管理、形式化的需求与经常的测试,只是由于商业开发解决错误的消耗较少,所以这些不用过分冗余。

迭代式开发 vs. 序列式开发:

迭代式开发中,需求发掘、构建、设计等工作较为重合,伴随整个编码过程,检错修正的成本在过程中逐次交付。序列式开发中,各工作较为独立,每一个工作依赖于前一轮工作。

对两种开发方式,前期准备均可以大大降低成本。

对于需求稳定、设计理解透彻、开发者熟悉相关领域、项目风险小、需要长期可预测性、后期更改代码消耗很大的项目,推荐采用序列式开发。反之,推荐迭代式开发。

问题定义:需要用自然语言、从用户的角度定义,并不涉及具体的解决方式。

需求:明确的需求可以避免程序员错误地理解需求、避免开发者之间的争论。

需求不是稳定的。

如何处理需求的变更:经常评估需求的质量;确保每一个人都知道变更需求的代价以免心血来潮;在新需求过多的情况下建立变更控制程序;使用能适应变更的开发方法。

架构:本书没有将过多笔墨花在架构上,但私以为架构很重要。

架构的典型组成:

程序组织:各构造块的分工与合作;主要的类;数据设计;业务规则;UI;资源管理;安全性;性能;可伸缩性;互用性;国际化/本地化;IO;错误处理,及相关约定;容错性;架构可行性;是否需要冗余;使用第三方库还是自己构建,以及为何这么做;是否复用;应对变更的策略;总体质量。

标签:需求,架构,隐喻,代码,笔记,开发,构建,大全
From: https://www.cnblogs.com/lmyy/p/17366424.html

相关文章

  • 2月构建之法其余阅读笔记
    第十二章用户体验12.1用户体验的要素用户的第一印象从用户的角度考虑问题软件服务始终都要记住用户的选择(长期的使用只会使软件更好用)短期刺激长期影响不让用户犯简单的错误注重用户体验和质量情感设计12.3评价标准对于一个软件的用户界面,我们有没有什么评价标准呢?......
  • 2月构建之法七八章阅读笔记
    第七章MSF微软公司中关于软件开发的思想和宣言有一个方法论——微软解决方案框架(MicrosoftSolutionFramework,MSF),也就是微软推荐的软件开发方法7.2MSF基本原则推动信息共享与沟通(Fosteropencommunications)为共同的远景而工作(Worktowardasharedvision)“共同的......
  • 2月构建之法九十章阅读笔记
    第九章项目经理9.1PM是啥软件团队里除了能写代码、测试代码和画图做设计的成员,还有一类角色,不做上面这些事情但也很重要,我们叫他们项目经理——PMPM的M就是Manager,但是P有这几种:ProductManager、ProjectManager、ProgramManager,在不同的行业和公司,他们的作用各不相同。接下......
  • 3月代码大全阅读笔记2
    第7章:高质量的子程序7.1为什么要创建子程序?降低复杂度,让每段代码都具有单一职责;引入中间、易懂的抽象;避免代码重复;支持子类化;隐藏顺序;隐藏指针操作;提高可移植性;简化复杂的布尔判断:把一切复杂的判断放入单独的函数中;改善性能:性能一次优化,能遍布到所有调用点;确保所有......
  • 2023.4 做题笔记
    出于一些原因,只有4.21往后的题。LOJ6481VisualPython++考虑贪心。非常容易想到,从左往右扫,每次扫到一个右下角时就匹配一个在它上面但是高度差最小的左上角,如果有多个同一高度的可以不用考虑顺序,因为边界重合的情况是不合法的。对于一种匹配方案,怎么判断它合不合法呢?我们同......
  • 「学习笔记」SPFA 算法的优化
    与其说是SPFA算法的优化,倒不如说是Bellman-Ford算法的优化。栈优化将原本的bfs改为dfs,在寻找负环时可能有着更高效的效率,但是最坏复杂度为指数级别。voiddfs_spfa(intu){ if(fg)return; vis[u]=true; for(pilit:son[u]){ intv=it.first; llw=......
  • pwn刷题笔记(格式化字符串)
    攻防世界:CGfsbchecksec查看保护机制,开启了NX和Canary,32位ELF。反汇编代码如下:intmain(){charbuf[0x7E-0x76];ebp-7Eshortintanonymous_0;ebp-76chars[0x74-0x10];ebp-74intanonymous_1;ebp-10anonymous_1=gs:14h//g......
  • 【愚公系列】用友系列之YonBuilder低代码平台概论和基本使用
    (文章目录)一、引言1.代码平台的概念和发展历程低代码平台是一种通过可视化界面和模板化组件快速创建应用程序的平台,其发展历程主要经历了三个阶段:第一个阶段是第一代低代码平台:其主要关注业务流程管理及应用程序的速度开发,但其可扩展性和可定制性较低。第二个阶段是第二代......
  • 四月读书笔记3
    四月读书笔记3流程图是被吹捧得最过分的一种程序文档。事实上,很多程序甚至不需要流程图,很少有程序需要一页纸以上的流程图。”“现实中,流程图被鼓吹的程度远大于它们的实际作用。没有一个有经验的编程人员,在开始编写程序之前,会例行公事地绘制详尽的流程图。在一些要求流程图的组......
  • 构建之法阅读笔记3
    服务化架构:随着系统复杂度的提高,单体应用已经无法满足业务需求,因此需要将系统拆分成多个小的、自治的服务,以提高系统的可扩展性和灵活性。去中心化思想:在设计系统时,应该避免单点故障,采用去中心化的思想,将负载分散到多个服务器上。同时,要考虑数据的一致性和复制策略。弹性设计:系统......