1
0
mirror of https://github.com/apachecn/lmpythw-zh.git synced 2025-05-28 12:02:19 +00:00
lmpythw-zh/part5.md
wizardforcel 8e88f1e171 part5
2017-08-11 21:11:12 +08:00

26 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第五部分:文本解析
> 原文:[Part V: Parsing Text](https://learncodethehardway.org/more-python-book/part4.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
本书的这一部分将教你如何处理文本,特别是,它是文本解析的正式开始。所以我不会涉及编程语言理论的所有不同理论元素,因为这是整个大学的学位。这只是简单而朴素的文本解析的开始,可以在许多编程环境中使用它。
大多数程序员与解析文本有着奇怪的关系。所有计算机程序设计的核心是解析,它是计算机科学中最容易理解和形式化的方向之一。解析数据在计算中无处不在。你可以在网络协议,编译器,电子表格,服务器,文本编辑器,图形渲染器,以及拥有人机或其他计算机接口的任何东西中找到它。即使两台计算机正在发送固定的二进制协议,尽管缺少文本,仍然存在解析的层面。
我要教你解析,因为它是一种容易理解的可靠技术,可以产生可靠的结果。当你面对可靠地处理一些输入并给出准确的错误时,你将求助于解析器,而不是手动编写一个。另外,一旦学习了解析的基础,就会更容易学习新的编程语言,因为你可以理解他们的语法。
## 代码覆盖简介
在这部分中,你仍然应该尝试拆解和剖析你编写的任何代码。我在这部分中增加的新东西,是代码覆盖的概念。代码覆盖的想法是,你实际上不知道在编写自动测试时是否测试了大多数情况。你可以使用形式逻辑来开发一个理论,即你覆盖了一切东西,但是我们知道人类的大脑非常难以在自己的思维中找到缺陷。这就是为什么你在这本书中使用“创造然后批判”的循环。在尝试创建某些东西的时候,你很难分析自己的想法。
代码覆盖是一种方法,至少能够了解你在应用中测试的东西。它不会找到你所有的缺陷,但它至少会显示,你已经命中每个可能的代码分支。如果没有覆盖,你实际上不知道你是否测试了每个分支。一个非常好的例子是故障处理。大多数自动测试仅测试最可靠的条件,并且不会测试错误处理。当你运行覆盖时,你会发现你忘记的所有方法,来测试错误处理代码。
代码覆盖也可以帮助你避免过度测试代码。我曾经从事测试驱动开发TDD爱好者的项目他们因 12/1 的测试/代码比而感到自豪(这意味着每一行代码都有 12 行测试)。一个简单的代码覆盖分析显示,他们只测试了 30% 的代码,其中许多线路以同样的方式进行了 6~20 次的测试。同时,像数据库查询中的异常情况那样的简单错误是完全未经测试的,并导致频繁的错误。最终,这些测试套件成为一种负担,阻止了项目的成长,并且只会吞掉开发人员的工作安排。难怪这么多敏捷咨询公司讨厌代码覆盖。
在本练习的视频中,你将看到我运行测试,并使用代码覆盖来确认我正在测试什么。我要求你做同样的事情,并且有使其变得容易的工具。我将向你展示如何阅读测试覆盖结果,以及如何确保你高效地测试你可以测试的一切东西。目标是拥有一个彻底的自动化测试套件,但不会浪费你的努力,所以你不会连续测试 12 次只有 30% 的代码。