zoukankan      html  css  js  c++  java
  • 《构建之法》第4章与第8章学习笔记

    第四章学习笔记

    一、代码规范

      1、代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。

         代码风格的原则是:简明,易读,无二义性。包括了:缩进、行宽、括号、断行与空白的{}行、分行、命名、下划线、大小写、注释。

      2、代码设计规范。牵扯到程序设计、模块之间的关系、设计模式等方方面面的通用原则。

         包括:函数、goto、错误处理。

    二、代码复审

    包括:自我复审、同伴复审、团队复审

      

      代码复审的目的:

        1、找出代码的错误。

        2、发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的

        3、发现算法错误,比如使用的算法不够优化,边界条件没有处理好等

        4、发现潜在的错误和回归性错误

        5、发现可能需要改进的地方

        6、教育开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识

      列举一个简单的代码复审核查表:

        1、概要部分

        2、实际规范部分

        3、代码规范部分

        4、具体代码部分

        5、效能

        6、可读性

        7、可测试性

    三、结对编程

      1、结对编程的好处:

        ①在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强。

        ②对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。

        ③在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动。

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

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

      1、萌芽阶段

      2、磨合阶段

      3、规范阶段

      4、创造阶段

      5、解体阶段

    第八章学习笔记

      软件需求:

        1.获取和引导需求

        2.分析和定义需求

        3.验证需求

      在软件产品的生命周期中管理需求

      如用以下不同角度划分

        1.对产品功能性的需求

        2.对产品开发过程的需求

        3.非功能性需求

        4.综合需求

     

     

      获取用户需求——用户调查

        1.焦点小组

        2.深入面谈

        3.卡片分类

        4.用户调查问卷

        5.用户日志研究

        6.人类学调查

        7.眼动跟踪研究

        8.快速原型调研

          等软件做好了再去找用户做调查,未免太费时,并且修改的成本很高。能否快速地取得用户的反馈?这时不妨拿一些纸张模型,让用户去使用,得到反馈。

        9.A/B测试

          如果你的产品已经有一些用户在用,你想对用户界面做一些改进,但是又不知道到底有多少用户会喜欢新的界面,怎么办?此时就可以运用A/B测试来获取改进方向。

       

     

     

      竞争性需求分析的框架

        1. N(Need,需求)

          这个需求可以是明确的、公开的也可能是说不清道不明的

        2. A(Approach,做法)

        3. B(Benefit,好处)

        4. C(Competitors,竞争)

     

        D(Delivery,推广)

     

     

      功能的定位和优先级

        杀手功能(Core)/ 外围功能(Context)

          我们的竞争对手和用户已经决定了一些此类产品必须要满足的需求,不能满足这些需求,产品就入不了用户和评论员的法眼,当然,还有许多功能是辅助性的。

        又得到另一种划分

          必要需求(Mission Critical)/ 辅助需求(Enabling)

        这四种划分结合起来,就得到了功能分析的四个象限。

          杀手功能:OCR文字识别技术,可以在屏幕上取词解释,拥有独家权威词典,等等。

          外围功能:良好的界面设计,在各个平台上都能运行。

          必要需求:单词短语释义的准确性(如果达不到这一点,用户就不会来使用)。

          辅助需求:可以做各种皮肤(这也许能让一些用户更喜欢这个软件,但不是决定因素)。

     

     

      资源有限,我们对不同功能有哪些办法呢?有下面五种办法。

        维持——以最低成本维持此功能。

        抵消——快速地达到“足够好”、“和竞争对手差不多”。

        优化——花大力气做到并保持行业最好。

        差异化——产生同类产品比不了的功能或优势(我有人无的优势,或者一个数量级以上的优势)。

        不做——砍掉一个功能也是一个办法,我们并不一定要做所有的功能。 

  • 相关阅读:
    【CodeForces】835D Palindromic characteristics
    【BZOJ】2006: [NOI2010]超级钢琴
    【比赛】STSRM 09
    【比赛】洛谷夏令营NOIP模拟赛
    【BZOJ】4147: [AMPPZ2014]Euclidean Nim
    【BZOJ】3895: 取石子
    【胡策08】解题报告
    【codevs】3196 黄金宝藏
    【BZOJ】1443: [JSOI2009]游戏Game
    【BZOJ】3105: [cqoi2013]新Nim游戏
  • 原文地址:https://www.cnblogs.com/qq1079179226/p/13801197.html
Copyright © 2011-2022 走看看