Differences between revisions 5 and 6
Revision 5 as of 2007-08-06 06:46:28
Size: 453
Editor: XiaoQi
Comment:
Revision 6 as of 2007-08-07 01:28:37
Size: 4845
Editor: XiaoQi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
 * `本章标题`:''Test-First Programming'' '''以测试优先为原则的'''编程 (./) '''测试优先'''编程[[BR]]
 (!) KISS 是改译的理由。[:../2006-03-22:以前的 List] 中提出的'''测试导向编程'''也是个不错的名字,但我 Google 了一下,933:1,'''测试优先编程'''获胜。况且这样的译法并不少见(eg. ''broad-first search'','''深度优先'''搜索)
 1. `本章标题`:''Test-First Programming'' '''以测试优先为原则的'''编程 (./) '''测试优先'''编程[[BR]]
 (!) KISS 是改译的理由。[:../2006-03-22] 中提出的'''测试导向编程'''也是个不错的名字,但我 Google 了一下,933:1,'''测试优先编程'''获胜。况且这样的译法并不少见。
 1. 频繁typo:'''他们''' (./) '''它们''' (!) 怀疑是翻译时用了盲目的替换

== roman.py, 第 1 阶段 ==
 1. `Para 1`:到目前为止,单元测试已经完成,是时候开始编写被单元测试测试的代码'''的时候''' {X} 了。但在逐步完成 roman.py 的同时你会看到它们一个个地通过'''('''测试''')''' {X} 。
 1. `例14.1, (1)`:这 {i} ^就^是如何定义你自己的 Python 异常。异常 {i} ^(Exception)^也是类,通过继承已有的异常,你可以创建自定义的异常。
 1. `例14.2上`:'''''Run romantest1.py with the -v command-line option''', which will give more verbose output...''[[BR]]
 '''运行 romantest1.py 带有 -v 选项的命令行'''可以得到更详细的输出信息,……[[BR]]
 (!) -_-明显不通。后面作了类似的改动。[[BR]]
 (./) 用命令行选项 -v 运行 romantest1.py 可以得到更详细的输出信息
 1. `例14.2`:'''Output of romantest1.py against roman1.py''' (./) 以 romantest1.py 测试 roman1.py 的输出
 1. `例14.2, (4)`:'''一个'''测试用例没能通过时,unittest 会区分是失败(failures)还是错误(errors)。[[BR]]
 (./) '''当某个'''测试用例没能通过时,unittest 会区分是失败(failures)还是错误(errors)。

== roman.py, 第 2 阶段 ==
 1. `例14.5, (1)`'''''toroman does, in fact, always return uppercase''', because romanNumeralMap defines the Roman numeral representations as uppercase. So this test passes already.''[[BR]]
 '''toroman 通过,事实上其返回值总是大写的''',因为 romanNumeralMap 定义的罗马字符都是以大写字母表示的。因此这个测试已经通过了。[[BR]]
 (./) '''事实上,toroman 的返回值总是大写的''',因为 romanNumeralMap 定义的罗马字符都是以大写字母表示的。因此这个测试已经通过了。
 1. `例14.5, (2)`:……以及可能的最长的罗马数字表示('''3888 对应的''') (./) '''对应于 3888'''
 1. `例14.5, (3)`:''However, the function does not "work" for bad values;...''[[BR]]
 但是,函数还没办法'''“'''处理'''”'''无效输入,……[[BR]]
 (!) 翻译成中文后,引号变得多余了。

== roman.py, 第 3 阶段 ==
 1. `例14.6, (2)`:……第二个参数是可选的,如果给定,则 {i} ^会^在异常未被处理时显示于追踪信息(trackback)之中。
 1. `例14.8, (2)`:……当一个非整数传递给 toroman {i} ^时^,int(n) <> n 检查出问题并引发 NotIntegerError 异常,……
 1. `Para -1`:''When all the unit tests for an '''entire''' module pass, stop coding the module.''[[BR]]
 一旦'''一个完整'''模块的单元测试通过了,停止编写这个模块。[[BR]]
 (./) 一旦'''整个'''模块的单元测试通过了,停止编写这个模块。

== roman.py, 第 4 阶段 ==
 1. `例14.9, (1)`:这和 toroman 的工作模式很'''相像'''。 (./) '''相似'''
 1. `例14.11, (2)`:尚不能完全相信,理论上存在这种可能性:toroman 存在错误而导致一些特定输入产生错误罗马数字表示 '''和''' fromroman 存在相应的错误,把 toroman 错误产生的这些罗马数字错误地转换为最初的整数。[[BR]]
 (./) 尚不能完全相信,理论上存在这种可能性:toroman 存在错误而导致一些特定输入会产生错误的罗马数字表示''',并且''' fromroman '''也'''存在相应的错误,把 toroman 错误产生的这些罗马数字错误地转换为最初的整数。

== roman.py, 第 5 阶段 ==
 1. `罗马数字规则, 2.`:44 表示为 XLIV (比50小10,'''又''' <!> 比 5 小 1) (./) 加上
 1. `4.`:'''有五个字符'''不能被重复:[[BR]]
 (./) '''含五的字符'''不能被重复:[[BR]]
 (!) 还请参看 re 一章。
 1. `5.`:罗马数字'''经常''' <!> 从高位到低位书写 (./) '''一般'''
 1. `例14.13, (2)`:''More importantly, the bad input tests pass. For instance, '''the malformed antecedents test checks cases like MCMC.'''''[[BR]]
 更重要的是,无效输入测试也通过了。例如,'''前面那个测试用例需要检查 MCMC 之类的情形。'''[[BR]]
 (./) 更重要的是,无效输入测试也通过了。例如,'''上面这个用例测试了 MCMC 之类的情形。'''
 1. `例14.13, (3)`:正则表达式捕捉了'''所有''' {X} 你在编写测试用例时所能预见的所有情况。

8-6<X14>roman.xml 测试优先编程

  1. 本章标题Test-First Programming 以测试优先为原则的编程 (./) 测试优先编程BR (!) KISS 是改译的理由。[:../2006-03-22] 中提出的测试导向编程也是个不错的名字,但我 Google 了一下,933:1,测试优先编程获胜。况且这样的译法并不少见。

  2. 频繁typo:他们 (./) 它们 (!) 怀疑是翻译时用了盲目的替换

roman.py, 第 1 阶段

  1. Para 1:到目前为止,单元测试已经完成,是时候开始编写被单元测试测试的代码的时候 {X} 了。但在逐步完成 roman.py 的同时你会看到它们一个个地通过测试 {X}

  2. 例14.1, (1):这 {i} 是如何定义你自己的 Python 异常。异常 {i} (Exception)也是类,通过继承已有的异常,你可以创建自定义的异常。

  3. 例14.2上Run romantest1.py with the -v command-line option, which will give more verbose output...BR 运行 romantest1.py 带有 -v 选项的命令行可以得到更详细的输出信息,……BR (!) -_-明显不通。后面作了类似的改动。BR (./) 用命令行选项 -v 运行 romantest1.py 可以得到更详细的输出信息

  4. 例14.2Output of romantest1.py against roman1.py (./) 以 romantest1.py 测试 roman1.py 的输出

  5. 例14.2, (4)一个测试用例没能通过时,unittest 会区分是失败(failures)还是错误(errors)。BR (./) 当某个测试用例没能通过时,unittest 会区分是失败(failures)还是错误(errors)。

roman.py, 第 2 阶段

  1. 例14.5, (1)toroman does, in fact, always return uppercase, because romanNumeralMap defines the Roman numeral representations as uppercase. So this test passes already.BR toroman 通过,事实上其返回值总是大写的,因为 romanNumeralMap 定义的罗马字符都是以大写字母表示的。因此这个测试已经通过了。BR (./) 事实上,toroman 的返回值总是大写的,因为 romanNumeralMap 定义的罗马字符都是以大写字母表示的。因此这个测试已经通过了。

  2. 例14.5, (2):……以及可能的最长的罗马数字表示(3888 对应的(./) 对应于 3888

  3. 例14.5, (3)However, the function does not "work" for bad values;...BR 但是,函数还没办法处理无效输入,……BR (!) 翻译成中文后,引号变得多余了。

roman.py, 第 3 阶段

  1. 例14.6, (2):……第二个参数是可选的,如果给定,则 {i} 在异常未被处理时显示于追踪信息(trackback)之中。

  2. 例14.8, (2):……当一个非整数传递给 toroman {i} ,int(n) <> n 检查出问题并引发 NotIntegerError 异常,……

  3. Para -1When all the unit tests for an entire module pass, stop coding the module.BR 一旦一个完整模块的单元测试通过了,停止编写这个模块。BR (./) 一旦整个模块的单元测试通过了,停止编写这个模块。

roman.py, 第 4 阶段

  1. 例14.9, (1):这和 toroman 的工作模式很相像(./) 相似

  2. 例14.11, (2):尚不能完全相信,理论上存在这种可能性:toroman 存在错误而导致一些特定输入产生错误罗马数字表示 fromroman 存在相应的错误,把 toroman 错误产生的这些罗马数字错误地转换为最初的整数。BR (./) 尚不能完全相信,理论上存在这种可能性:toroman 存在错误而导致一些特定输入会产生错误的罗马数字表示,并且 fromroman 存在相应的错误,把 toroman 错误产生的这些罗马数字错误地转换为最初的整数。

roman.py, 第 5 阶段

  1. 罗马数字规则, 2.:44 表示为 XLIV (比50小10, <!> 比 5 小 1) (./) 加上

  2. 4.有五个字符不能被重复:BR (./) 含五的字符不能被重复:BR (!) 还请参看 re 一章。

  3. 5.:罗马数字经常 <!> 从高位到低位书写 (./) 一般

  4. 例14.13, (2)More importantly, the bad input tests pass. For instance, the malformed antecedents test checks cases like MCMC.BR 更重要的是,无效输入测试也通过了。例如,前面那个测试用例需要检查 MCMC 之类的情形。BR (./) 更重要的是,无效输入测试也通过了。例如,上面这个用例测试了 MCMC 之类的情形。

  5. 例14.13, (3):正则表达式捕捉了所有 {X} 你在编写测试用例时所能预见的所有情况。

DiveIntoPythonZh/2007-08-06 (last edited 2009-12-25 07:09:17 by localhost)