zoukankan      html  css  js  c++  java
  • 《编程匠艺》读书笔记之十七

    第十九章 注意细节——编写软件规范
    • 编写和处理规范是程序员应该具备的一项非常重要的技能。用自然语言沟通,与用代码沟通一样重要。
    • 规范使一些正式文档,它们构成了开发过程的一部分,用于提供内部的软件文档。
    • 规范有助于你更加聪明的工作,并编写出更好的软件,不过,糟糕的规范会起到完全相反的作用。
    • 对于软件开发过程而言,重要的不仅仅是软件规范是否存在,而且还有软件规范的质量。
    • 规范是团队内部和团队之间进行沟通的一种形式。它的重要性会随着项目规模的增大而急剧增加。
    • 编写规范有助于是我们的信息:1. 更加安全;2. 可访问;3. 更加准确。
    • 如果你发现你的文档不具有可塑性也不可维护,那么你的软件开发就要遭殃了。优秀的程序员会考虑让他们的规范就像他们的代码一样可塑。
    • 需求规范:它极为详细的列出了代码预期应该具有怎样的行为,它必须涉及所有重要的、高风险的、高价值的各种系统行为,非常全面而且没有歧义。

      需求规范需要包括:
    • 功能需求。描述程序必须实现哪些功能。
    • 性能需求。说明了软件的速度应当多快,以及是否有某些操作必须限时完成。
    • 互操作需求。描述了软件必须与之交互的其他软件、硬件和外部系统。
    • 未来的操作需求。确定当前必须容纳的功能,即使这些功能还不能马上实现。

    • 客户必须同意并签署需求规范,它构成了软件开发人员和客户之间的一个有效的合同。
    • 软件需求必须尽早得到,以便设定预期、预防功能蠕变并减少开发人员的焦虑。

      我们使用需求规范的目的:
    • 保证项目按轨道前进,并按时完成。
    • 提高客户满意度。
    • 减少bug。
    • 保持你的头脑清醒。

    • 功能规范:描述了软件爱你的可以观察到的行为。它完整并清晰的描述了它的公共接口,以及所有外部数据的结构和格式、与其他组件或者规范之间的依赖关系。
    • 如果你的软件任务没有得到充分的规定,那么在你编写好功能规范,并且大家都同意它是正确之前,先不要开发编写代码。
    • 系统体系结构规范:描述了软件解决方案的整体情况和结构。
    • 体系结构会影响开噶的后期阶段,这里的一个错误或歧义会传递下去,而在后面的阶段会变成严重的缺陷。
    • 用户界面规范:包含了关于用户界面的信息。它也许会描述一个GUI应用程序,或者一个基于网络的界面、一个有声的电话菜单系统、一个为盲人设计的界面或者一个简单的单LED显示。
    • 设计规范:描述了组件的内部设计,描述了功能规范将会怎样或已经怎样实现。它描述了所有的内部API、数据结构和格式。
    • 对于大多数软件来说,设计规范是随着代码一同编写的,或者是在编写了代码之后才编写的。
    • 使用文学性编程工具来编写你的技术文档,不要编写很容易过时的字处理文档。
    • 测试规范:描述了对软件的特定部分进行测试的策略。它包含了一张所有必须执行的测试列表。
    • 如果你能为你的软件创建程序性的单元测试,那么就执行这个测试,而不要创建冗长的测试规范。

      虽然每种规范都包含不同的内容,但是所有的规范都必须:
    • 正确。如果一个规范可以用不止一种方式来解释,那么这个规范就称不上“规范”。
    • 可理解。最好的规范应该从读者的角度编写,而不是从作者的角度编写,信息的构成形式有利于让新来的人能够理解,而不是为了方便作者。
    • 完整。规范中的细节水平应该明显低于实现中的细节水平,否则规范要么就是描述过于细致,要么就是内容过于庞杂,影响理解。
    • 可验证。规范的内容必须是可验证的,这在很大程度上相当于内容要正确、无歧义并且完整。
    • 可修改。注意没有什么东西是不可改变的。
    • 自描述。
    • 可跟踪,应该有一个文档控制过程,以及一个用来存放所有文档的中央文件存储库。

      编写规范的过程非常简单,如下:
    • 选择合适的文档模板,如果没有,建立一个。
    • 编写文档。
    • 评审。
    • 文档入库。
    • 在今后的开发过程中,对文档进行维护。

    • 正式的文档应该以第三人称和现在时态进行编写。
    • 程序员们喜欢的是编程,而不是编写长篇的文档。大多数程序员都没有良好的写作技巧,他们编写的代码很优雅,但是写出的文章却很糟糕。
    • 编写规范的行为本身就会要求你开动脑筋。
    • 通过避免编写规范来节省时间,几乎肯定是一种虚假的节约行为,规范有助于人们在沟通时节约很多时间。
    • 避免规范的编写非常危险,而且也很不专业。如果没有足够的时间来编写文档,那么也很可能没有足够的时间来编写代码。

    • 优秀的程序员:1. 了解规范的重要性,并使用规范来使他们的开发生活更轻松;2. 了解所需的适当的文档化水平;3. 希望提高他们的编码技巧,并且寻找审查和实践的机会。
    • 糟糕的程序员:1. 一头扎进编码任务中,完全不考虑设计、文档和评审;2. 在编写时不用心思考,写出的规范没有结构,难以理解;3. 逃避规范的编写,觉得这很枯燥,而且毫无意义。

  • 相关阅读:
    辨异 —— 冠词(定冠词、不定冠词、零冠词)
    辨异 —— 冠词(定冠词、不定冠词、零冠词)
    dot 语法全介绍
    dot 语法全介绍
    图像的简单认识
    图像的简单认识
    向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读
    图的重要性质
    Android下载文件提示文件不存在。。。 java.io.FileNotFoundException
    Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)
  • 原文地址:https://www.cnblogs.com/wing011203/p/1335419.html
Copyright © 2011-2022 走看看