博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建之法读书笔记 (1)
阅读量:5810 次
发布时间:2019-06-18

本文共 1910 字,大约阅读时间需要 6 分钟。

构建之法读书笔记(第3,4章)

1. 个人能力的衡量与发展

第三版构建之法对应3.1 节。

一点思考:

在对话中,讨论到软件工程师的能力和篮球运动员的能力的数据统计。
对于篮球运动员来说,有出场数、首发数、分钟、命中率……等。
对于软件开发工程师来说,有计划、开发、报告……等。
但是我觉得需要注意以下的区别:

  1. 篮球运动员的数据由其他人统计,程序员的数据,需要自己统计。
  2. 篮球运动员的统计数据比较客观,程序员在做自己统计的时候客观会比较难一些。
  3. 篮球运动员的统计比较容易制定标准(是否算进球,是2分还是3分),程序员的标准相对比较灵活(用不太好的方式,快速解决问题HardCode;用较好的方式,考虑作为参数,在解决问题上花费了比较多的时间配置文件。如何衡量)。
  4. 篮球运动有裁判,具体的规则很明确。写程序虽然也有代码整洁之道,KISS,DRY原则,但没有裁判。

2.稳定交付

第三版构建之法对应3.1节, 代码按时交付。

一点思考:

在工作中,任务大致分为这几种:

  1. 调研性质。公司之前没有此方面的技术积累,需要进行调研。
    • 之前已经有人做过了,有经验可以参考。
    • 之前没有其他公司做过,可以参考的资料很少。
  2. 工程性质。公司已经有了很多的经验积累,主要的工作量就是写代码和测试了。
  3. 维护性质。公司有一些老代码,老项目还在运行,用户反馈问题,需要维护。
    不同的任务的时间估计会有很大的不同,时间预估分析的时候,是否考虑过这个问题。

3.思维误区

第三版构建之法对应于3.2节。

一点思考:

关于过早优化

对于快速变化的部分,就像给快速发育的小朋友买衣服和鞋子。

  • 买的刚刚合适,小朋友长得很快,可能很快就要买新的了。
  • 买的太大了,小朋友过了很久还是显得有点大,衣服都要穿破了,还是不合适,显得大,优点浪费。
    所以这个部分需要经验丰富的人做指导会更好一些;如果没有经验丰富的人,实行敏捷开发,小步快跑。

过早扩大化/泛化

所有优秀的架构和平台,几乎都是演化而来,直接设计出来的几乎没有。不要在一开始就想着平台化,框架化。
对于软件开发来说,第一个目标是要先做到基本功能可用。在写代码的时候注意模块化,函数功能的单一化,为以后架构的修改做准备。
对于架构,要逐步演化,小步优化,要不等到最后可能积重难返,只能重来。

4.全才,专才。

第三版构建之法对应于3.3节。

一点思考:

前段时间网上有个词很火----- "全栈工程师"。
我的理解是这样,闻道有先后,术业有专攻,不太建议适合做全栈。
有人会说,项目有需要怎么办呢?我想到的解决方案是:如果公司遇到了一个问题,公司里没有人在这个领域比较熟悉,可以请一个在此领域比较熟悉的人作为顾问或者兼职,将他的技能快速复制到自己的能力里,快速完成任务。
举例:每一种框架都在发明属于自己的编程语言。
很多框架在细小的地方,一个配置文件不对,会导致整个运行不起来,参考OpenStack。这个时候最快的解决方法是找个对OpenStack特别熟悉的工程师,来讲解对应的地方。

5.代码复审

第三版构建之法对应于4.4节。

一点思考:

在公司经历过一个时长一天的代码复审。审核员:CTO,架构设计者。被审核:我,代码实现者。
CTO和我花了一天的时间,对代码从头到尾进行了一次审核。在编写代码过程中,我对架构的设计进行了适当的简化。审核的过程中,我对这件事情向CTO进行了说明。
所以我们在审核代码的过程中,对原有设计中针对以前设计的代码进行了优化和删除。对现有的架构设计的代码,进行了整理和完善。
整个过程中我的收获:

  1. 学习到了CTO在设计这个程序的过程中,对于每个问题是怎么思考的。
  2. 代码规范、程序结构怎么样可以看起来更清晰。
  3. 结构的设计需要遵循的规则,方便以后进行扩展和修改。

6.是否保存老代码

第三版构建之法对应于4.4.3节。

一点思考:

关于在代码中保存不用的老代码,我目前就是这样的作法,公司也采用了这样的方案。
主要原因是提交代码过了几个版本以后,就不太容易记住老代码在哪个版本做了删除,之前的版本有。
如果是对于3---5个地方,都有老代码,在几次提交中进行的删除,随着提交的进行,其对应关系就更难找了。
如果有更好的办法来进行老代码的恢复,我会采用。要不可能还是注释掉是最容易的办法。

7.结对编程。

第三版构建之法对应于4.5节。

一点思考:
关于结对编程:结对编程最好是两个水平差不多的程序员合作,基础是保证每个人即使独立完成也没有什么问题,否则还是传帮带好一些。
代码复审的化:至少需要有一个经验比较丰富的工程师,否则代码评审的意义不大。

个人观点,欢迎讨论、批评指正。

转载地址:http://xgcbx.baihongyu.com/

你可能感兴趣的文章
Linux Apache SSL证书安装
查看>>
Android高手应该精通哪些内容?(转)
查看>>
Linux 文件系统
查看>>
mysql调优
查看>>
【博客话题】毕业多年,我们再相会
查看>>
windows中禁止U盘写入
查看>>
JPA的Embeddable注解
查看>>
对ThreadLocal的源码解读
查看>>
Delegate.Combine
查看>>
mysql 复制出错又一例
查看>>
net命令
查看>>
Linux常用命令——文件管理(一)
查看>>
linux lvm快速建立逻辑卷,简单快照,以及应用
查看>>
华为S9306破解console密码及清空配置
查看>>
【扁平和简约来袭】
查看>>
系统构造-linux启动过程及系统初始化
查看>>
常用的串口调试命令
查看>>
oracle : 无法更新 ON 子句中引用的列
查看>>
Jquery实现树桩导航
查看>>
Lync Server 2013 Preview 安装体验(三)扩展架构、安装管理工具、发布拓扑
查看>>