练习 27:tr

原文:Exercise 27: tr

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

这个练习是继续学习 TDD(又称“测试优先”)风格的开发。知道如何这样编程很重要,因为它在许多地方使用,但如前所述,它有其局限性。在实现tr命令时,您将再次使用 TDD 进行练习。要十分确定,你是先严格编写测试,然后是代码,然后再审计两个东西。

在上一个练习中,我让你逐步构建测试用例和代码。这通常是最不容易出错的开发方法,但它不能帮助您更好地分析自己的代码。在这个练习中,你会做一些略微不同的事情,因为我将会写一个完整的测试用例,进行审计,然后编写整个代码,进行审计,并通过运行测试来确认审计。

这意味着,在这个练习中你的流程是这样的:

  • 尝试编写大部分 TDD 测试用例。
  • 审计测试用例并确认它是否编写正确。
  • 运行测试以确保它们失败,但是查找任何语法错误。此时您不应该有语法错误。
  • 为测试用例编写代码,但不要运行测试。
  • 审计您的代码,并尝试在运行测试之前查看有多少缺陷。

您将在下一个练习中,使用此过程来跟踪您的审计技能、测试技能的指标,并更好地控制您编写代码的方式。

挑战练习

tr工具是翻译字符流的有效方式。尽管非常简单,它可以对字符做一些非常复杂的事情。例如,您可以使用tr,以一行代码,获取history中使用的单词的频率:

history | tr -cs A-Za-z '\n' | tr A-Z a-z | sort | uniq -c | sort -rn

似乎很炫酷,但是 Doug McIlroy 曾经使用这一行来辩称,高德纳(Donald Knuth)编写的一个类似的程序太长。Knuth 的实现是“10页”,从头开始构建一切。Doug 的一行只是使用标准的 Unix 工具来做同样的事情。这展示了 Unix 的管道工具的力量和tr的翻译文本的能力。

使用手册页和任何其他东西,弄清tr命令的作用。还有一个同名的 Python 项目,但是我会告诉你要避开它,直到你完成实现,所以你可以稍后再比较这个项目。同时不要忘记,为此你需要一个整体的项目,它应该是测试完成的 TDD 风格,就像我开始的描述的那样。

45 分钟的批判

我希望你继续使用45分钟的时间,但是有一个对这种工作方式的很大批评:你不能进入扩展的专注流程。在短时间内工作,像这样,在你需要处理大量工作的,以及必须加快步伐时有所帮助。这种情况发生在工作真的很无聊,没有乐趣的时候。我正在让你使用45分钟的时间块来加快自己的速度,但是我们也会在稍后使用它们,来收集一些指标,有关如何在时间中工作,来进行后续分析。

但我会提醒你,最好的编程是在专注的状态中完成的。这就是,你的注意力在几个小时之内高度集中,失去所有的时间感,直到凌晨 5 点,意识到你度过了一整夜。这种强烈的专注使编程对我来说非常愉快,但是当您对您正在做的事情很感兴趣时,它真的是可持续的。当您需要处理别人的糟糕的代码库时,这个现象往往不会发生。在这些情况下,您需要一个不同的策略,加快你的工作并让你摆脱困境,而不会损耗你的兴致。这就是 45 分钟的时间块的作用。

最后,建立你进入状态并集中精力几个小时的能力,一个方法是从短暂的时间开始,然后慢慢增加它们,直到你可以忍受更长的时间。继续使用 45 分钟的时间快,但是如果你只是忘乎所以,最后在最后几个小时内完成黑魔法,那么就玩的开心。没有人会说你做错了,这实际上是正常的。

研究性学习

  • 这种工作方式怎么样?你喜欢吗?尝试阐明为什么,然后阅读一些当前的 TDD 的文章,或它的近亲行为驱动开发(BDD)。

  • 你认为通过首先审计你的代码而不是逐步构建它,你发现了更多还是更少的缺陷?猜测它,然后写下来。

笨办法学 Python · 续 练习 27:`tr`相关推荐

  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 · 续 练习 32:扫描器

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

  8. 笨办法学 Python · 续 练习 18:性能测量

    练习 18:性能测量 原文:Exercise 18: Measuring Performance 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 在本练习中,你将学习使用多种工具 ...

  9. python描述器 有限状态机_笨办法学 Python · 续 练习 30:有限状态机

    练习 30:有限状态机 每当你阅读一本关于解析的书,都有一个可怕的章节,关于有限状态机(FSM).他们对"边"和"节点"进行了详细的分析,每个可能的" ...

最新文章

  1. 干货 | 循环神经网络LSTM的数学过程
  2. OpenFeign的9个坑,每个都能让你的系统奔溃 OpenFeign
  3. 机器学习:循环神经网络知识要点
  4. 【Android工具】安卓手机轻松获取硬件数据和状态信息
  5. 让你彻底理解Synchronized
  6. java图像处理,拷贝图像EXIF信息
  7. Ubuntu18.04安装Nautilus-actions自定义文件管理器鼠标右键列表
  8. C# 中使用HttpClient读取大型Json数据集
  9. 昆明学院计算机专业在哪个校区,昆明学院有几个校区及校区地址
  10. 微博API接入初识【cxn专用】
  11. 使用GDAL生产jpg格式的快视图(拇指图)
  12. 异步是javascript的精髓
  13. 【工具】(七):win10常用工具整理!!!
  14. 网课题库接口搭建步骤
  15. 给 30 岁左右程序员,4 个突破内卷的破局建议!
  16. 中国信通院:2017年Q3共享单车行业发展指数报告(附下载)
  17. 量子计算机采用超导技术吗,新发现的超导体材料可能是量子计算机的硅
  18. idea 配置 git 教程
  19. 家用电器的CCC认证流程
  20. 【游】优秀游戏场景分析

热门文章

  1. (38)System Verilog类class复制详解
  2. server sql 无法从long转为int_MySQL中,21个写SQL的好习惯(修正版)
  3. python容器装水_Python版LeetCode11. 盛最多水的容器
  4. 7005.element-ui组件
  5. plsql提示列快捷键_PLsql快捷键
  6. 数据结构与算法分析(二)——C++实现链表
  7. 嵌入式Linux系统编程学习之六make工程管理和Makefile
  8. c++中的fork函数_linux c语言 fork() 和 exec 函数的简介和用法
  9. jdk1.8新特性_Lambda表达式的引入
  10. 分页——SQL Server 对比 MySQL