Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
lmpythw-zh
提交
8e88f1e1
L
lmpythw-zh
项目概览
OpenDocCN
/
lmpythw-zh
9 个月 前同步成功
通知
0
Star
18
Fork
5
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
lmpythw-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8e88f1e1
编写于
8月 11, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
part5
上级
756475d0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
6 deletion
+6
-6
part5.md
part5.md
+6
-6
未找到文件。
part5.md
浏览文件 @
8e88f1e1
...
...
@@ -10,16 +10,16 @@
本书的这一部分将教你如何处理文本,特别是,它是文本解析的正式开始。所以我不会涉及编程语言理论的所有不同理论元素,因为这是整个大学的学位。这只是简单而朴素的文本解析的开始,可以在许多编程环境中使用它。
大多数程序员与解析文本有着奇怪的关系。所有计算机程序设计的核心是解析,它是计算机科学中最容易理解和形式化的方向之一。解析数据在计算中无处不在。
您
可以在网络协议,编译器,电子表格,服务器,文本编辑器,图形渲染器,以及拥有人机或其他计算机接口的任何东西中找到它。即使两台计算机正在发送固定的二进制协议,尽管缺少文本,仍然存在解析的层面。
大多数程序员与解析文本有着奇怪的关系。所有计算机程序设计的核心是解析,它是计算机科学中最容易理解和形式化的方向之一。解析数据在计算中无处不在。
你
可以在网络协议,编译器,电子表格,服务器,文本编辑器,图形渲染器,以及拥有人机或其他计算机接口的任何东西中找到它。即使两台计算机正在发送固定的二进制协议,尽管缺少文本,仍然存在解析的层面。
我要教你解析,因为它是一种容易理解的可靠技术,可以产生可靠的结果。当
您面对可靠地处理一些输入并给出准确的错误时,您
将求助于解析器,而不是手动编写一个。另外,一旦学习了解析的基础,就会更容易学习新的编程语言,因为你可以理解他们的语法。
我要教你解析,因为它是一种容易理解的可靠技术,可以产生可靠的结果。当
你面对可靠地处理一些输入并给出准确的错误时,你
将求助于解析器,而不是手动编写一个。另外,一旦学习了解析的基础,就会更容易学习新的编程语言,因为你可以理解他们的语法。
## 代码覆盖简介
在这部分中,
您仍然应该尝试拆解和剖析您编写的任何代码。我在这部分中增加的新东西,是代码覆盖的概念。代码覆盖的想法是,您实际上不知道在编写自动测试时是否测试了大多数情况。你可以使用形式逻辑来开发一个理论,即你覆盖了一切东西,但是我们知道人类的大脑非常难以在自己的思维中找到缺陷。这就是为什么你在这本书中使用“创造然后批判”的循环。在尝试创建某些东西的时候,您
很难分析自己的想法。
在这部分中,
你仍然应该尝试拆解和剖析你编写的任何代码。我在这部分中增加的新东西,是代码覆盖的概念。代码覆盖的想法是,你实际上不知道在编写自动测试时是否测试了大多数情况。你可以使用形式逻辑来开发一个理论,即你覆盖了一切东西,但是我们知道人类的大脑非常难以在自己的思维中找到缺陷。这就是为什么你在这本书中使用“创造然后批判”的循环。在尝试创建某些东西的时候,你
很难分析自己的想法。
代码覆盖是一种方法,至少能够了解
您在应用中测试的东西。它不会找到你所有的缺陷,但它至少会显示,你已经命中每个可能的代码分支。如果没有覆盖,你实际上不知道你是否测试了每个分支。一个非常好的例子是故障处理。大多数自动测试仅测试最可靠的条件,并且不会测试错误处理。当您运行覆盖时,您会发现您
忘记的所有方法,来测试错误处理代码。
代码覆盖是一种方法,至少能够了解
你在应用中测试的东西。它不会找到你所有的缺陷,但它至少会显示,你已经命中每个可能的代码分支。如果没有覆盖,你实际上不知道你是否测试了每个分支。一个非常好的例子是故障处理。大多数自动测试仅测试最可靠的条件,并且不会测试错误处理。当你运行覆盖时,你会发现你
忘记的所有方法,来测试错误处理代码。
代码覆盖也可以帮助
您
避免过度测试代码。我曾经从事测试驱动开发(TDD)爱好者的项目,他们因 12/1 的测试/代码比而感到自豪(这意味着每一行代码都有 12 行测试)。一个简单的代码覆盖分析显示,他们只测试了 30% 的代码,其中许多线路以同样的方式进行了 6~20 次的测试。同时,像数据库查询中的异常情况那样的简单错误是完全未经测试的,并导致频繁的错误。最终,这些测试套件成为一种负担,阻止了项目的成长,并且只会吞掉开发人员的工作安排。难怪这么多敏捷咨询公司讨厌代码覆盖。
代码覆盖也可以帮助
你
避免过度测试代码。我曾经从事测试驱动开发(TDD)爱好者的项目,他们因 12/1 的测试/代码比而感到自豪(这意味着每一行代码都有 12 行测试)。一个简单的代码覆盖分析显示,他们只测试了 30% 的代码,其中许多线路以同样的方式进行了 6~20 次的测试。同时,像数据库查询中的异常情况那样的简单错误是完全未经测试的,并导致频繁的错误。最终,这些测试套件成为一种负担,阻止了项目的成长,并且只会吞掉开发人员的工作安排。难怪这么多敏捷咨询公司讨厌代码覆盖。
在本练习的视频中,
您将看到我运行测试,并使用代码覆盖来确认我正在测试什么。我要求你做同样的事情,并且有使其变得容易的工具。我将向您展示如何阅读测试覆盖结果,以及如何确保您高效地测试您
可以测试的一切东西。目标是拥有一个彻底的自动化测试套件,但不会浪费你的努力,所以你不会连续测试 12 次只有 30% 的代码。
在本练习的视频中,
你将看到我运行测试,并使用代码覆盖来确认我正在测试什么。我要求你做同样的事情,并且有使其变得容易的工具。我将向你展示如何阅读测试覆盖结果,以及如何确保你高效地测试你
可以测试的一切东西。目标是拥有一个彻底的自动化测试套件,但不会浪费你的努力,所以你不会连续测试 12 次只有 30% 的代码。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录