zoukankan      html  css  js  c++  java
  • 《构建之法》第四章 两人合作

    《构建之法》第四章 两人合作

    4.1 代码规范

    做一个有商业价值的项目,或者在团队里工作,代码规范相当重要。“代码规范”可以分成两个部分:

    1. 代码风格规范——主要是文字上的规定,看似表面文章,实际上非常重要
    2. 代码设计规范——牵涉到程序设计、模块之间的关系、设计模式等方方面面的通用原则

    4.2 代码风格规范

    代码风格的原则是:简明,易读,无二义性.

    • 缩进:Tab键在不同的情况下会显示不同的长度,严重干扰阅读体验而。4个空格的距离从可读性来说,正好

    • 行宽:行宽必须限制,但是以前有些文档规定的80字符行宽太小了,现在时代不同了,可以限定为100字符

    • 括号:在复杂的条件表达式中,用括号清楚地表示逻辑优先级

    • 分行:不要把多条语句放在一行,更严格地说,不要把多个变量定义在一行上。

    • 命名:用单个字母给有复杂语义的实体命名啊hi不好的,在C语言中,比较通用的,也是经过了实践检验的方法叫“匈牙利命名法”。

    • 下划线:下划线用来分隔变量名字中的作用域标注和变量的语义。移山公司规定下划线一般不用在其他方面。

    • 大小写:由多个单词组成的变量名,如果全部都是小写,很不易读,一个简单的解决方案就是用大小写区分它们。

      Pascal——所有单词的第一个字母都大写

      Camel——第一个单词全部小写,随后单词随Pas-cal形式,这种方式也叫lowerCamel

      一个通用的做法是:

      所有的类型/类/函数名都用Pascal形式,所有的变量都用Camel形式

      类/类型/变量:名词或组合名词,如Member、ProductInfo等

      函数则用动词或动宾组合词来表示,如get/set、RenderPage()

    • 注释:注释是为了解释程序做什么(What),为什么这样做(Why),以及要特别注意的地方。不要注释程序是怎么工作的(How),因为程序本身就应该能说明这一问题。需要注意的是,复杂的注释应该放在函数头;另外,注释(包括所有源代码)应该只用ASCII字符,不要用中文或其他特殊字符,否则会极大地影响程序的可移植性。

    4.3 代码设计规范

    代码设计规范不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式等方方面面。

    • 函数:现代程序设计语言中的绝大部分功能,都在程序的函数中实现。
    • goto:函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto。
    • 错误处理:

      1、参数处理:在Debug版本中,所有的参数都要验证其正确性。在正式版本中,对从外部(用户或别的模块)传递过来的参数,要验证其正确性。
      2、断言:如何验证正确性?那就要用断言(Assert)。断言和错误处理是什么关系?当你觉得某事肯定如何时,就可以用断言。

    4.4 代码复审

    代码复审就是看代码是否在“代码规范”的框架内正确地解决了问题。有以下三种形式:

    • 自我复审:用同伴复审的标准来要求自己。不一定最有效,因为开发者对自己总是过于自信。如果能持之以恒,则对个人有很大好处。
    • 同伴复审:简便易行
    • 团队复审:有比较严格的规定和流程,适用于关键的代码,以及复审后不再更新的代码覆盖率高——很多双眼睛盯着程序,但效率可能不高(全体人员都要到会)。

    代码复审的目的在于找出代码、逻辑、算法以及其他潜在的错误,发现可能需要改进的地方,同时教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识。

    代码复审后,最好在程序中加入人名,以示负责。比如:

    //$todo(wzf): make this function thread-safe
    //$review(wzf):is this function thread-safe?  Need to double-check 
    //$bug(wzf):when input array is very large, this func might crash
    

    在代码复审过程中,$review 标记的问题要一一讨论,在代码复审过后,所有的$review标记要清除。在一个里程碑或正式版本发布之前,所有的$todo$bug标记都要清除

    4.5 结对编程

    结对编程有很多优势,比如:

    • 在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强
    • 对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感
    • 在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动

    总之,如果运用得当,结对编程可以取得更高的投入产出比(Return of Investment)

    4.6 两人合作的不同阶段和技巧

    1、萌芽阶段

    2、磨合阶段

    3、规范阶段

    4、创造阶段

    5、解体阶段

    如何给别人提供容易接收的反馈:(三明治办法)

    • 首先,先来一片面包,强调双方的共同点,让对方觉得处于一个安全的环境。
    • 其次,再把肉放上,提供建设性意见。
    • 最后,再来一片面包,呼应开头,鼓励对方把工作做好。
  • 相关阅读:
    async await promise 执行时序
    理解prototype
    X-Requested-With
    event事件传播规则
    【小文】Flask web Hello程序!
    【小文】php-gtk: Hello!
    【小文】HTTP 状态码
    【小文】Python环境安装配置
    C语言:趣味小问题 鸡兔同笼
    C语言:趣味小问题 百钱买百鸡
  • 原文地址:https://www.cnblogs.com/wyz-1995/p/8502998.html
Copyright © 2011-2022 走看看