《构建之法(第三版)》第四章(代码片段)

20179202杨晓桐 20179202杨晓桐     2022-10-22     386

关键词:

4.1 代码规范

代码规范可以分为两个部分:

  • 代码风格规范:主要是文字上的规定
  • 代码设计规范:牵扯到程序设计,模块之间的关系,设计模式等方方面面的通用原则。

4.2 代码风格规范

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

  • Tab键在不同的情况下会显示不同的长度,严重干扰阅读体验。4个空格的距离可读性最好
  • 行宽必须限制,可以限定为100字符
  • 在复杂的条件表达式中,用括号清楚地表示逻辑优先级
  • 每个“”和“”都独占一行

    if (condition) 
     
    DoSomething(); 
     
    else 
     
    DoSomethingElse(); 
    
  • 不要把多条语句放在一行上,更严格地说,不要把多个变量定义在一行上,如:Foo foo1, foo2;
  • 匈牙利命名法:

    fFileExist   表明是一个bool值,表示文件是否存在;
    szPath  表明是一个以0结束的字符串,表示一个路径
  • 下划线用来分隔变量名字中的作用域标注和变量的语义
  • 所有的类型/类/函数名都用Pascal形式(所有单词的第一个字母都大写),所有的变量都用Camel形式(第一个单词全部小写,随后单词随Pascal形式);类/类型/变量为名词或组合名词,如Member、ProductInfo等;
    函数用动词或动宾组合词来表示,如get/set、RenderPage()
  • 不要注释程序是怎么工作的(How),注释是为了解释程序做什么(What),为什么这样做(Why),以及要特别注意的地方。复杂的注释应该放在函数头,很多函数头的注释都用来解释参数的类型等。注释(包括所有源代码)应该只用ASCII字符

4.3 代码设计规范

代码设计规范不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式等方方面面。如果所写的程序会被很多人使用需要遵守以下规则:

  • 函数最好有单一的出口,为了达到这一目的,可以使用goto
  • 在Debug版本中,所有的参数都要验证其正确性。在正式版本中,对从外部(用户或别的模块)传递过来的参数,要验证其正确性。当觉得某事肯定如何时,可以用断言:Assert (p != NULL)。如果认为某事可能会发生,这时就要写代码来处理可能发生的错误情况。如:

    ……
    p = AllocateNewSpace(); 
    if (p == NULL)
     // error handling. 
    
    else
     // use p to do something
    

4.4 代码复审

代码复审就是看代码是否在“代码规范”的框架内正确地解决了问题。形式有自我复审、同伴复审、团队复审,同伴复审是最基本的复审手段。

代码复审核查表应该囊括(不局限于)概要部分(整体风格)、设计规范部分(按照已知的规则去约束)、代码规范部分、具体代码部分、效能、可读性、可测试性。

4.5 结对编程

结对编程中有两个角色:

  • 驾驶员(driver):控制键盘输入
  • 领航员(navigator):起到领航、提醒的作用

结对编程步骤:

  • 驾驶员:写设计文档,进行编码和单元测试等XP开发流程
  • 领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题
  • 驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间
  • 主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“他/她的代码”,只有“我们的代码”
  • 只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利
  • 设置好结对编程的环境,座位、显示器、桌面等都要能允许两个人舒适地讨论和工作。如果是通过远程结对编程,那么网络、语音通讯和屏幕共享程序要设置好

传统复审最大的缺点是复审者缺少对程序的深入了解,
传统复审设计人员多,复审效率不能平衡。在结对编程的过程中不断重复的互相复审可以十分默契地提高效率。结对编程最大的特点在于“领航员”的引入。如果实际中这个角色不能“领航”,则不如放弃结对编程。

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

两人合作分为萌芽阶段,磨合阶段,规范阶段,创造阶段,解体阶段。

评论人的三种层次,评论别人的代码的时候也是要注意自己侧重那个层次的,这样才能达到最好的效果,被评论人才能更好地找出自己需要改正的地方并解决:

  • 最外层:行为和后果
  • 中间层:习惯和动机
  • 最里层:本质和固有属性

本章讲了很多两人合作的问题,如果两个人之间的合作都处理不好,又如何谈团队合作?有些人技术相当好,但是却不能很好地与人沟通,不能与团队中其他人的风格相融通。团队中只有通过频繁地相互交流,互相融通,在研发过程中遇到的困难能最快、最有效地得到解决。

《构建之法(第三版)》第一章

...间的依赖关系、编译参数、链接参数等。这些都是软件的构建过程。和软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)用关的内容是软件工程的核心部分,由此推论软件企业=软件+商业模式。程序(算... 查看详情

构建之法:第三次心得

...了团队之间的合作的重要性。具体就是学习了构建之法的第四章和第五章。第四章第四章,讲的是两人合作。在软件行业的逐步发展中,一个软件基本上一个人是完成不了的,软件都是在相互合作中完成的。首先,代码除了要足... 查看详情

《构建之法(第三版)》速读提问

《构建之法(第三版)》速读提问1、什么是软件工程软件工程学科诞生后,人们为软件工程给出了不同的定义,例如最早的定义是由F.L.Bauer给出的,即“软件工程是为了经济地获得能够在实际机器上高效运行的、可靠的软件而... 查看详情

《构建之法(第三版)》第三章

3.1个人能力的衡量与发展1.软件开发流程不光指团队的流程,还包括个人开发流程。把每个人的工作有序地组织起来,就是团队的流程。“有序”,并不是“无争论”。每个人的工作质量直接影响最终软件的质量。2.初级软件工... 查看详情

《构建之法》小组第三次

   这周我们小组学习了《构建之法》的第四章,从中知道了很多代码规范的各种原则,这些原则在编程时约束我们,可以使我们的程序更加规范化,可读性更高,便于复审,测试和修改。   代码规范可以分... 查看详情

《构建之法(第三版)》第二章

第二章:个人技术和流程书本内容回顾概述一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应该有一个流程,在这一章里会介绍PS(PersonalSoftwarePro-cess,个人软件开发流程)。单元测试单元测试... 查看详情

速读《构建之法(第三版)》20199319

本周速读了《构建之法(第三版)》,本书共有十七个章节(如下图所示),介绍了软件工程的方方面面,干货满满。在速读完成后我思考了以下几个问题。1、目前流行的几种源程序版本管理软件和项目管理软件各有什么优缺... 查看详情

《构建之法(第三版)》第二章

2.1单元测试1.软件的很多错误来源于程序员对模块功能的误解,疏忽或不了解模块的变化。单元的测试可以让自己负责的模块功能定义尽量明确,模块功能的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证。2... 查看详情

《构建之法》(第三版)——邹欣读书笔记

坦率的讲,我认为此时读本书的意义和价值不是很大,尤其是在课业繁重的当下。我认为读书应该是从“薄”->“厚”->"薄",此时完成第一步速读已力有不逮,况细读精读乎?如果知识得不到及时巩固和积累,学习的同时没... 查看详情

构建之法第三次心得

构建之法第四、五章心得学习了第四第五章之后,我了解到了两人合作的注意要点,还有团队和开发流程。软件都是在相互合作中完成的,合作的最小单位是两个人。每个人的标准都不一样,对于什么是好的代码规范未必认同,... 查看详情

读《构建之法》第四章第十七章(代码片段)

第四章《两人合作》1.原文:“注释(包括所有源代码)应该只用ASCLL字符,不要使用中文和其他字符,否则会极大影响程序的可植性”疑问:引擎根本不对空行和注释进行解析,直接忽略掉,它们不参与计算代码行数也不参与... 查看详情

《构建之法》读第十七章收获(代码片段)

《构建之法》读第四、十七章收获第四章两人合作读了第四章,我才意识到代码规范的重要性,代码不仅要自己看懂,也要能让别人看懂,代码规范能使团队合作更好的进行。代码规范分为代码风格规范和代码设计规范。其中代... 查看详情

关于《构建之法》第四章和第十七章的问题(代码片段)

关于《构建之法》第四章和第十七章的问题第四章:问题一:在关于“缩进”,书中不提倡用tab键。而建议使用四个空格。但是tab键可设置占符数,在实际开发中,tab键是缩进的快捷键,我无法想像每次使用缩进都要敲四次空格... 查看详情

第二周读书笔记《构建之法》(代码片段)

...讲述了代码规范、结对编程、团队模式、开发流程。 第四章两人合作首先提到的是代码规范,程序员写的代码不仅要给机器看,还要给人看。好的代码规范能事半功倍。代码规范有分为代 查看详情

《构建之法》第四章

 这一章主要讲的是代码的规范和结对编程。 首先代码规范又分成代码风格规范和代码设计规范。不同的人都有自己独特的编程风格,但在团队合作中往往需要遵从统一的代码风格。简明,易读,无二义性是代码风格的原... 查看详情

构建之法第四章

构建之法第四章本章为两人合作,主要介绍了代码规范、极限编程、结对编程、两人合作的不同阶段以及影响他人的技巧代码规范:可分为代码风格规范和代码设计规范两部分代码风格的原则:简明、易懂、无二义性代码风格规... 查看详情

读《构建之法》第四章第十七章

第四章   两人合作  通过对于《构建之法》第四章的阅读使我对代码规范、代码复审、以及结对编程有了更加深刻的认识,所谓代码规范可以分为两个部分,代码风格规范和代码设计规范,代码风格规范的原则是:... 查看详情

构建之法第四章读后感

构建之法第四章主要讲述了两人合作,理论和知识点包括代码规范、极限编程、结对编两人合作的不同阶段以及影响他人的技巧。代码规范包括:代码风格规范和代码设计规范,代码风格规范主要是文字上的规定,看似表面文章... 查看详情