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

    第3章:软件工程师的成长

    软件开发流程包括团队的流程和个人开发流程。个人在团队中有独立的流程,而把每个人的工作有序的组织起来,就是团队的流程。

    所以,每个人的工作质量直接影响最终软件的质量。PSP中衡量软件开发的工作量和质量有以下4个因素,1、项目/任务有多大?(一般用代码行数来表示,也可用功能点来表示);2、花了多少时间?(可以用小时、天、月、年来表示;一组人所花费的时间可以用(人数*时间)来表示);3、质量如何?(交付的代码有多少缺陷?);4、是否按时交付?

    对于一个软件工程师的成长:(1Steve McConnell版本:首先需要具备一定的知识和能力,一个工程师对这些知识的掌握分为四个阶段:1、入门;2、熟练;3、带头人;4、大师。其次,工程师有职业成长级别。

     (2)大公司版本:初级软件开发工程师、中级软件开发工程师、高级软件开发工程师、首席软件开发工程师等。

    第4章:两人合作(前3节)

    代码规范分为两个部分:

    1)代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。其原则是:简明、易读、无二义性。缩进为4个空格;行宽限制为100个字符;在复杂的条件表达式中,用括号清楚的表示逻辑优先级;断行以及空白的{}行;分行:即不把多条语句放在一行中;命名:要让人看到;注释:注释用来解释程序做什么,为什么这样做,以及要特别注意的地方。      

    2)代码设计规范。牵涉到程序设计、模块之间的关系、设计模式等方方面面的通用原则。程序设计语言的大多数功能,都在函数中实现,所以对函数来说,最重要的原则是:只做一件事,并且要做好;goto:函数最好有唯一的出口,可以使用goto来实现这一目的;对错误的处理:

        1、参数处理:在Debug版本中,所有参数都要验证其正确性,在正式版本中,对从外部传递过来的参数要验证其正确性;

        2、断言:是验证错误的一种方式;

         处理c++中的类:1、类:使用类来封装面向对象的概念和多态,对于简单的数据类型没必要用类来实现,对于有显式的构造和析构函数的类不要建立全局的实体,仅在必要时,才使用“类”;2、如果只是数据的封装,用struct即可;3、按以下次序来说明类中的成员:publicprotectedprivate4、数据成员:数据类型成员用m_name说明,不能使用公共的数据成员,要用inline访问函数,这样可兼顾封装和效率;5、虚函数:使用虚函数来实现多态,仅在必要时使用多态,如果一个类型要实现多态基类中的析构函数应该是虚函数;6、构造函数:在构造函数中只需简单初始化所有的数据成员,构造函数不应该返回错误;7、析构函数:把所有的清理工作都放在析构函数中,析构函数不应该出错;8newdelete:实现自己的new/delete,这样可以方便的加上自己的跟踪和管理机制,检查new的返回值,释放指针时不用检查NULL9、运算符:一般情况下,自己定义的类不需要自定义操作符,运算符不要做标准语义之外的动作,运算符实现必须非常有效率,如果有复杂的操作应定义一个单独的函数,当不知道怎么办时,用成员函数而不是运算符;10异常:不能用异常作为逻辑控制来处理程序的主要流程,需要了解异常及处理异常的花销,当使用异常时要注意在什么地方清理数据,异常不能跨过DLL或进程的边界来传递信息;11、类型继承:仅在必要时,才可用类型继承,用const标注只读的参数,用const标注不改变数据的函数

    个人感受:

             1、我过去是怎么做的:对数据成员的命名不规范,左缩进也没有注意到

             2、结合书中所讲,说明为什么这样不好:会导致我写出来的程序,不能被别人很容易的看懂,修改bug时也不容易快速有效的找出bug

             3、提出一个解决办法,避免再次掉入陷阱:规范代码的命名,编写程序时时刻提醒自己注意左缩进。

  • 相关阅读:
    华为交换机中hybrid、access、trunk的区别
    debug调试
    网络基础--ICMP
    HCNA---ARP协议
    Python之字典
    python之元组
    网络基础--Telnet、SSH、FTP
    学习Cisco切换为华为的第一天---Telnet
    学思科,考华为,用华三。这是多少人的现况,快来听听我的经历~
    [P3385]【模板】负环 (spfa / bellman-ford)
  • 原文地址:https://www.cnblogs.com/muamu/p/5295537.html
Copyright © 2011-2022 走看看