第五部分:文本解析

原文:Part V: Parsing Text

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

本书的这一部分将教你如何处理文本,特别是,它是文本解析的正式开始。所以我不会涉及编程语言理论的所有不同理论元素,因为这是整个大学的学位。这只是简单而朴素的文本解析的开始,可以在许多编程环境中使用它。

大多数程序员与解析文本有着奇怪的关系。所有计算机程序设计的核心是解析,它是计算机科学中最容易理解和形式化的方向之一。解析数据在计算中无处不在。你可以在网络协议,编译器,电子表格,服务器,文本编辑器,图形渲染器,以及拥有人机或其他计算机接口的任何东西中找到它。即使两台计算机正在发送固定的二进制协议,尽管缺少文本,仍然存在解析的层面。

我要教你解析,因为它是一种容易理解的可靠技术,可以产生可靠的结果。当你面对可靠地处理一些输入并给出准确的错误时,你将求助于解析器,而不是手动编写一个。另外,一旦学习了解析的基础,就会更容易学习新的编程语言,因为你可以理解他们的语法。

代码覆盖简介

在这部分中,你仍然应该尝试拆解和剖析你编写的任何代码。我在这部分中增加的新东西,是代码覆盖的概念。代码覆盖的想法是,你实际上不知道在编写自动测试时是否测试了大多数情况。你可以使用形式逻辑来开发一个理论,即你覆盖了一切东西,但是我们知道人类的大脑非常难以在自己的思维中找到缺陷。这就是为什么你在这本书中使用“创造然后批判”的循环。在尝试创建某些东西的时候,你很难分析自己的想法。

代码覆盖是一种方法,至少能够了解你在应用中测试的东西。它不会找到你所有的缺陷,但它至少会显示,你已经命中每个可能的代码分支。如果没有覆盖,你实际上不知道你是否测试了每个分支。一个非常好的例子是故障处理。大多数自动测试仅测试最可靠的条件,并且不会测试错误处理。当你运行覆盖时,你会发现你忘记的所有方法,来测试错误处理代码。

代码覆盖也可以帮助你避免过度测试代码。我曾经从事测试驱动开发(TDD)爱好者的项目,他们因 12/1 的测试/代码比而感到自豪(这意味着每一行代码都有 12 行测试)。一个简单的代码覆盖分析显示,他们只测试了 30% 的代码,其中许多线路以同样的方式进行了 6~20 次的测试。同时,像数据库查询中的异常情况那样的简单错误是完全未经测试的,并导致频繁的错误。最终,这些测试套件成为一种负担,阻止了项目的成长,并且只会吞掉开发人员的工作安排。难怪这么多敏捷咨询公司讨厌代码覆盖。

在本练习的视频中,你将看到我运行测试,并使用代码覆盖来确认我正在测试什么。我要求你做同样的事情,并且有使其变得容易的工具。我将向你展示如何阅读测试覆盖结果,以及如何确保你高效地测试你可以测试的一切东西。目标是拥有一个彻底的自动化测试套件,但不会浪费你的努力,所以你不会连续测试 12 次只有 30% 的代码。

笨办法学 Python · 续 第五部分:文本解析相关推荐

  1. 笨办法学 Python · 续 中文版

    笨办法学 Python · 续 中文版 原书:Learn More Python 3 The Hard Way 译者:飞龙 自豪地采用谷歌翻译 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓 ...

  2. 笨办法学 Python · 续 练习 33:解析器

    练习 33:解析器 原文:Exercise 33: Parsers 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 想象一下,你将获得一个巨大的数字列表,你必须将其输入到电子表格 ...

  3. 笨办法学 Python · 续 练习 0:起步

    练习 0:起步 原文:Exercise 0: The Setup 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你需要设置和配置一些工具来学习此书.有可能你已经有了很多这些东西 ...

  4. 笨办法学 Python · 续 第二部分:简单的黑魔法

    第二部分:简单的黑魔法 原文:Part II: Quick Hacks 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你有最好的想法,你会打动世界!你会成为一个亿万富豪!你的大 ...

  5. 笨办法学 Python · 续 练习 52:`moreweb`

    练习 52:moreweb 原文:Exercise 52: moreweb 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 现在,你已经使用 Python http.server ...

  6. 笨办法学 Python · 续 练习 24:URL 快速路由

    练习 24:URL 快速路由 原文:Exercise 24: Fast URL Search 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 我们将结束数据结构和算法的部分,并将 ...

  7. 笨办法学 Python · 续 练习 46:`blog`

    练习 46:blog 原文:Exercise 46: blog 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 你应该按照本节开头的描述编写流程主题,你应该将流程列出并做好准备. ...

  8. 笨办法学 Python · 续 练习 32:扫描器

    练习 32:扫描器 原文:Exercise 32: Scanners 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 我的第一本书在练习 48 中非常偶然涉及到了扫描器,但现在我 ...

  9. 笨办法学 Python · 续 第四部分:进阶项目

    第四部分:进阶项目 原文:Part IV: Intermediate Projects 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 在第三部分中,你学习了数据结构和算法的基础 ...

最新文章

  1. nodejs安装jsdom模块出现MSB4025错误
  2. Nignx平滑升级(1.8.0-1.8.1)
  3. 配置环境将win32项目移植到Android
  4. InvalidateRect()、UpdateWindow()、RedrawWindow()区别
  5. HDU6223 - Infinite Fraction Path
  6. android深度探索 HAL及驱动开发 第八章
  7. 给i茅台APP提几个建议
  8. python解acm题_python ACM ,持续更新中。。。。。。。。。。。。
  9. python 迭代器 生成器_Python迭代器和生成器
  10. php curl post text,php – POST适用于Postman,但不适用于CURL
  11. jms消息模式和区别_JMS管理对象和JMS消息
  12. Servlet菜鸟教程
  13. 安装包制作工具 SetupFactory 详解
  14. 国内液压与气动标准大全
  15. windows7副本不是正版解决方法
  16. 【Operamasks-UI】可编辑表格insertRow和deleteRow遇到空表格时的问题
  17.  一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部。定义一个结构体ComplexNumber,包含imaginary和real两个成员变量,能够表示
  18. 【ABAP】采购订单行项目 税码 自动默认
  19. 真无线蓝牙耳机性价比高?真无线蓝牙耳机性价比排行
  20. CppPrimer 学习笔记(1)

热门文章

  1. [转] createObjectURL方法 实现本地图片预览
  2. OSPF中virtual-link
  3. LintCode: Max Tree
  4. 新人上路-搭建项目-springweb-controller测试
  5. 你的 webpack 也需要休息,让你的 webpack 拒绝 996ICU
  6. Payara基金会发布全面支持MicroProfile 2.0的5.183版Payara Server和Payara Micro
  7. NeHe OpenGL教程 第四十课:绳子的模拟
  8. AngularJS控制div隐藏或显示-ng-show
  9. Oracle 11G for redhat 自启动脚本
  10. WP8.1学习系列(第五章)——中心控件Hub或透视控件Pivot交互UX