Update 16-Validating-Your-Code.md

This commit is contained in:
独奏猫
2019-08-26 18:10:33 +08:00
committed by GitHub
parent 8d077baa26
commit 9697ee398d

View File

@@ -1,7 +1,11 @@
[TOC]
<!-- Validating Your Code -->
# 第十六章 代码校验
### 你永远不能保证你的代码是正确的,你只能证明它是错的。
让我们先暂停学习编程语言的知识,看看一些代码基础知识。特别是能让你的代码更加健壮的。
@@ -22,7 +26,7 @@ Java是一个静态类型的语言程序员经常对一种编程语言明显
C风格的语言特别是C++通常会认为性能比安全更重要。用Java编程比C++一般认为大概快两倍快的原因是Java的安全性网络这种特征类似于垃圾回收以及键入检查。通过将单元测试集成到构建过程中你扩大了这个安全网从而导致了更快的开发效率。当你发现设计或实现的缺陷时可以更容易、更大胆重构你的代码并更快地生成更好的产品。
当我意识到要保证书中代码的正确性时我自己的测试经历就开始了。这本书通过Gradle构建系统 你需要安装JDK你可以通过输入gradlew compileJava编译本书的所有代码。自动提取和自动编译的效果对本书代码的质量是如此的直接和引人注目在我看来任何编程书籍的必备条件——你怎么能相信你没有编译的代码呢? 并且我发现我可以利用搜索和替换在整本书大范围的修改。如果我引入了一个错误,代码提取器和构建系统就会清除它。随着程序越来越复杂,我在我的系统发现了一个严重的漏洞. 编译程序是毫无疑问的第一步, 对于一本要出版的书而言,这看来是相当具有革命意义的发现(由于出版压力, 你经常打开一本程序设计的书并且发现了上面代码的缺陷。然而我收到了来自读者反馈的语法问题。我在实现一个自动化执行测试系统的时候使用了在早期能看到效果的步骤但这是迫于出版压力与此同时我明白我的程序绝对有问题这些都会变成bug让我自食其果。我也经常收到读者的抱怨说我没有显示足够的代码输出。我需要验证程序的输出并且在书中显示验证的输出。我以前的意见是读者应该一边看书一边运行代码许多读者就是这么做的并且从中受益。然而这种态度背后的原因是我无法保证证明书中所示的输出是正确的。从经验来看我知道随着时间的推移会发生一些事情使得输出不再正确或者我一开始就没有把它弄对。为了解决这个问题我利用Python创建了一个工具你将在下载的示例中找到此工具。本书中的大多数程序都产生控制台输出该工具将该输出与源代码清单末尾的注释中显示的预期输出进行比较所以读者可以看到预期的输出并且知道这个输出已经被构建程序验证的。
当我意识到要保证书中代码的正确性时我自己的测试经历就开始了。这本书通过Gradle构建系统 你需要安装JDK你可以通过输入gradlew compileJava编译本书的所有代码。自动提取和自动编译的效果对本书代码的质量是如此的直接和引人注目在我看来任何编程书籍的必备条件——你怎么能相信你没有编译的代码呢? 并且我发现我可以利用搜索和替换在整本书大范围的修改。如果我引入了一个错误,代码提取器和构建系统就会清除它。随着程序越来越复杂,我在系统发现了一个严重的漏洞 编译程序是毫无疑问的第一步, 对于一本要出版的书而言,这看来是相当具有革命意义的发现(由于出版压力, 你经常打开一本程序设计的书并且发现了上面代码的缺陷。然而我收到了来自读者反馈的语法问题。我在实现一个自动化执行测试系统的时候使用了在早期能看到效果的步骤但这是迫于出版压力与此同时我明白我的程序绝对有问题这些都会变成bug让我自食其果。我也经常收到读者的抱怨说我没有显示足够的代码输出。我需要验证程序的输出并且在书中显示验证的输出。我以前的意见是读者应该一边看书一边运行代码许多读者就是这么做的并且从中受益。然而这种态度背后的原因是我无法保证书中的输出是正确的。从经验来看我知道随着时间的推移会发生一些事情使得输出不再正确或者我一开始就没有把它弄对。为了解决这个问题我利用Python创建了一个工具你将在下载的示例中找到此工具。本书中的大多数程序都产生控制台输出该工具将该输出与源代码清单末尾的注释中显示的预期输出进行比较所以读者可以看到预期的输出并且知道这个输出已经被构建程序验证的。
### JUnit