zoukankan      html  css  js  c++  java
  • 构建之法读书笔记 (1)

    构建之法读书笔记(第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节。
    一点思考:
    关于结对编程:结对编程最好是两个水平差不多的程序员合作,基础是保证每个人即使独立完成也没有什么问题,否则还是传帮带好一些。
    代码复审的化:至少需要有一个经验比较丰富的工程师,否则代码评审的意义不大。

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

  • 相关阅读:
    数据库级触发器
    Erstudio8.0怎么用?Erstudio8.0汉化版详细使用教程
    Excel 信息对比_数组版
    百万级数据查询优化(数据库)
    sql查询重复记录、删除重复记录方法大全
    工作表(Worksheet)基本操作应用示例
    cxgrid中,如何根据列名或字段名取得footer值
    cxGrid使用汇总
    Delphi XE5通过WebService开发Web服务端和手机客户端
    cxGrid 锁定列
  • 原文地址:https://www.cnblogs.com/Dennis-mi/p/7442417.html
Copyright © 2011-2022 走看看