语义版本控制,定义于[这个页面](http://semver.org/)是一种版本控制方案,建议*主要*、*次要*和*补丁*版本号使用三位版本号`M.M.p`。这对图书馆非常有用。如果自上一版本以来只有一个 bug 修复,那么您将增加最后一个版本号。当新版本还包含新功能,但库与以前的版本兼容时,您将增加次要数字;换句话说,任何使用旧版本的程序仍然可以使用新版本。当新版本与前一版本有显著差异时,主要版本号会增加。在应用的情况下,没有使用应用 API 的代码;因此,次要版本号没有那么重要。不过,这并没有什么坏处,而且事实证明,在应用中发出较小变化的信号通常是有用的。我们将在最后一章讨论如何对软件进行版本化。
语义版本控制,定义于[这个页面](http://semver.org/)是一种版本控制方案,建议*主要*、*次要*和*补丁*版本号使用三位版本号`M.M.p`。这对库非常有用。如果自上一版本以来只有一个 bug 修复,那么您将增加最后一个版本号。当新版本还包含新功能,但库与以前的版本兼容时,您将增加次要数字;换句话说,任何使用旧版本的程序仍然可以使用新版本。当新版本与前一版本有显著差异时,主要版本号会增加。在应用的情况下,没有使用应用 API 的代码;因此,次要版本号没有那么重要。不过,这并没有什么坏处,而且事实证明,在应用中发出较小变化的信号通常是有用的。我们将在最后一章讨论如何对软件进行版本化。
当您使用来自 JDK、开源或商业库的库、类和方法时,您可以参考源代码,但不应依赖于实现。您应该只依赖于该库附带的 API 的契约和定义。当您从某个外部库实现一个接口时,您不需要实现它的某些部分,也不需要创建一些虚拟方法,您会感到危险。这是埋伏。很可能是图书馆质量不好,或者你不知道如何使用它。我不知道哪个更糟。
当您使用来自 JDK、开源或商业库的库、类和方法时,您可以参考源代码,但不应依赖于实现。您应该只依赖于该库附带的 API 的契约和定义。当您从某个外部库实现一个接口时,您不需要实现它的某些部分,也不需要创建一些虚拟方法,您会感到危险。这是埋伏。很可能是库质量不好,或者你不知道如何使用它。我不知道哪个更糟。
@@ -637,7 +637,7 @@ public void setMatch(int matchedPositions, int matchedColors) {
}
```
`setMatch`方法不仅设置值,而且检查值是否一致。两个值之和不能超过列数。此检查确保使用`Row`类 API 的调用方不会不一致地使用它。如果这个 API 只在我们的代码中使用,那么这个断言不应该是代码的一部分。在这种情况下,良好的编码风格将确保使用单元测试时不会不一致地调用该方法。当我们在无法控制的情况下创建要使用的 API 时,我们应该检查使用是否一致。如果不这样做,我们的代码在不一致地使用时可能会表现得很奇怪。当调用者将匹配设置为与任何可能的猜测都不匹配的值时,游戏可能永远不会结束,调用者可能很难弄清楚到底发生了什么。这可能需要我们代码的调试执行。这不是图书馆用户的任务。始终尝试创建不需要从 API 使用者处调试的代码。
`setMatch`方法不仅设置值,而且检查值是否一致。两个值之和不能超过列数。此检查确保使用`Row`类 API 的调用方不会不一致地使用它。如果这个 API 只在我们的代码中使用,那么这个断言不应该是代码的一部分。在这种情况下,良好的编码风格将确保使用单元测试时不会不一致地调用该方法。当我们在无法控制的情况下创建要使用的 API 时,我们应该检查使用是否一致。如果不这样做,我们的代码在不一致地使用时可能会表现得很奇怪。当调用者将匹配设置为与任何可能的猜测都不匹配的值时,游戏可能永远不会结束,调用者可能很难弄清楚到底发生了什么。这可能需要我们代码的调试执行。这不是库用户的任务。始终尝试创建不需要从 API 使用者处调试的代码。
为企业编程,甚至为中等规模的项目编程,都离不开外部库的使用。在 Java 世界中,我们使用的大多数库都是开源的,而且或多或少是免费的。当我们购买图书馆时,通常有一个由采购部门执行的标准流程。在这种情况下,有一个关于如何选择供应商和库的书面策略。在“自由”软件的情况下,他们通常不关心,尽管他们应该关心。在这种情况下,选择过程主要取决于 IT 部门,因此,在选择图书馆之前,即使图书馆是免费的,也要知道要考虑的要点。
为企业编程,甚至为中等规模的项目编程,都离不开外部库的使用。在 Java 世界中,我们使用的大多数库都是开源的,而且或多或少是免费的。当我们购买库时,通常有一个由采购部门执行的标准流程。在这种情况下,有一个关于如何选择供应商和库的书面策略。在“自由”软件的情况下,他们通常不关心,尽管他们应该关心。在这种情况下,选择过程主要取决于 IT 部门,因此,在选择库之前,即使库是免费的,也要知道要考虑的要点。
CI 服务器可以在一台计算机上运行,也可以在多台计算机上运行。如果它服务于许多项目,那么可以将它设置为一个中央服务器,其中有许多代理在不同的机器上运行。当必须启动构建过程时,中央服务器将此任务委托给其中一个代理。代理可能有不同的负载,运行几个不同的构建进程,并且可能有不同的硬件配置。构建过程可能对处理器的速度或可用内存有要求。有些代理可能会为较小的项目运行更简单的构建,但无法执行大型项目的构建,或者执行某些测试仍需要大量内存的小型项目的构建。