mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Merge pull request #29485 from wxy/20210205.0-⭐️⭐️-Why-simplicity-is-critical-to-delivering-sturdy-applications
RP:published/20210205.0 ⭐️⭐️ Why simplicity is critical to delivering sturdy applications.md
This commit is contained in:
commit
bc92491d1a
@ -3,28 +3,33 @@
|
|||||||
[#]: author: "Alex Bunardzic https://opensource.com/users/alex-bunardzic"
|
[#]: author: "Alex Bunardzic https://opensource.com/users/alex-bunardzic"
|
||||||
[#]: collector: "lkxed"
|
[#]: collector: "lkxed"
|
||||||
[#]: translator: "toknow-gh"
|
[#]: translator: "toknow-gh"
|
||||||
[#]: reviewer: " "
|
[#]: reviewer: "wxy"
|
||||||
[#]: publisher: " "
|
[#]: publisher: "wxy"
|
||||||
[#]: url: " "
|
[#]: url: "https://linux.cn/article-15877-1.html"
|
||||||
|
|
||||||
ZOMBIES:为什么简洁性是交付健壮软件的关键(五)
|
ZOMBIES:为什么简洁性是交付健壮软件的关键(五)
|
||||||
======
|
======
|
||||||
|
|
||||||
|
![][0]
|
||||||
|
|
||||||
|
> 当你坚持最简场景时,你最终会得到最简单的解决方案。
|
||||||
|
|
||||||
在前面的文章中,我已经解释了为什么将编程问题看作一整群丧尸来处理是错误的。我用 ZOMBIES 方法来解释为什么循序渐进地处理问题更好。
|
在前面的文章中,我已经解释了为什么将编程问题看作一整群丧尸来处理是错误的。我用 ZOMBIES 方法来解释为什么循序渐进地处理问题更好。
|
||||||
|
|
||||||
ZOMBIES 表示以下首字母缩写:
|
ZOMBIES 表示以下首字母缩写:
|
||||||
|
|
||||||
**Z** – 最简场景(Zero)
|
- **Z** – 最简场景(Zero)
|
||||||
**O** – 单元素场景(One)
|
- **O** – 单元素场景(One)
|
||||||
**M** – 多元素场景(Many or more complex)
|
- **M** – 多元素场景(Many or more complex)
|
||||||
**B** – 边界行为(Boundary behaviors)
|
- **B** – 边界行为(Boundary behaviors)
|
||||||
**I** – 接口定义(Interface definition)
|
- **I** – 接口定义(Interface definition)
|
||||||
**E** – 处理特殊行为(Exercise exceptional behavior)
|
- **E** – 处理特殊行为(Exercise exceptional behavior)
|
||||||
**S** – 简单场景用简单的解决方案(Simple scenarios, simple solutions)
|
- **S** – 简单场景用简单的解决方案(Simple scenarios, simple solutions)
|
||||||
|
|
||||||
在系列的前四篇文章中,我展示了 ZOMBIES 方法的前六个原则(LCTT译注:原文为前五个,应为笔误)。
|
在系列的前四篇文章中,我展示了 ZOMBIES 方法的前六个原则(LCTT译注:原文为前五个,应为笔误)。
|
||||||
|
|
||||||
第一篇中 [实现了最简场景][7],它为代码提供了最简可行路径。第二篇文章中执行了 [单元素场景和多元素场景上的测试][8]。第三篇中介绍了 [边界和接口][9]。 第四篇中处理 [特殊行为][10]。在本文中,我将介绍最后一项:简单场景用简单的解决方案。
|
第一篇中 [实现了最简场景][7],它为代码提供了最简可行路径。第二篇文章中执行了 [单元素场景和多元素场景上的测试][8]。第三篇中介绍了 [边界和接口][9]。 第四篇中处理 [特殊行为][10]。在本文中,我将介绍最后一项:简单场景用简单的解决方案。
|
||||||
|
|
||||||
|
|
||||||
### 简单场景用简单的解决方案
|
### 简单场景用简单的解决方案
|
||||||
|
|
||||||
回顾这个网购 API 的实现过程,你会发现总是有目的性地坚持考虑最简单的场景。在这个过程中,最终你会得到最简单的解决方案。
|
回顾这个网购 API 的实现过程,你会发现总是有目的性地坚持考虑最简单的场景。在这个过程中,最终你会得到最简单的解决方案。
|
||||||
@ -161,7 +166,7 @@ Total tests: 9
|
|||||||
|
|
||||||
这就是为什么迭代式方法在真正实现一个功能之前总是先提供一个假实现。你硬编码一系列的期望,以验证小的修改不会导致系统无法运行。然后进行必要的修改,用实际处理代码替换硬编码的值。
|
这就是为什么迭代式方法在真正实现一个功能之前总是先提供一个假实现。你硬编码一系列的期望,以验证小的修改不会导致系统无法运行。然后进行必要的修改,用实际处理代码替换硬编码的值。
|
||||||
|
|
||||||
作为经验法则,在迭代方法中,你的目标是通过设计期望(微测试),对代码进行不断改进。每进行一次改进,你都要检验系统,以确保它处于工作状态。以这种方式不断前进,最终会达到满足所有期望的程度,并且此时代码已经被重构,没有任何存活的变异体了。
|
作为经验法则,在迭代方法中,你的目标是通过设计期望(微测试),对代码进行不断改进。每进行一次改进,你都要检验系统,以确保它处于工作状态。以这种方式不断前进,最终会达到满足所有期望的程度,并且此时代码已经被重构,没有任何存活的变异体了。
|
||||||
|
|
||||||
一旦达到了这种状态,你就可以相当自信地交付解决方案了。
|
一旦达到了这种状态,你就可以相当自信地交付解决方案了。
|
||||||
|
|
||||||
@ -169,6 +174,8 @@ Total tests: 9
|
|||||||
|
|
||||||
愿 ZOMBIES 方法在软件开发的征程上帮助到你。
|
愿 ZOMBIES 方法在软件开发的征程上帮助到你。
|
||||||
|
|
||||||
|
*(题图:MJ/ca463fc6-021b-4818-ba3d-9cd3c8736577)*
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
via: https://opensource.com/article/21/2/simplicity
|
via: https://opensource.com/article/21/2/simplicity
|
||||||
@ -176,7 +183,7 @@ via: https://opensource.com/article/21/2/simplicity
|
|||||||
作者:[Alex Bunardzic][a]
|
作者:[Alex Bunardzic][a]
|
||||||
选题:[lkxed][b]
|
选题:[lkxed][b]
|
||||||
译者:[toknow-gh](https://github.com/toknow-gh)
|
译者:[toknow-gh](https://github.com/toknow-gh)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
@ -188,10 +195,10 @@ via: https://opensource.com/article/21/2/simplicity
|
|||||||
[4]: https://opensource.com/alternatives?intcmp=7016000000127cYAAQ
|
[4]: https://opensource.com/alternatives?intcmp=7016000000127cYAAQ
|
||||||
[5]: https://opensource.com/tags/linux?intcmp=7016000000127cYAAQ
|
[5]: https://opensource.com/tags/linux?intcmp=7016000000127cYAAQ
|
||||||
[6]: https://opensource.com/resources?intcmp=7016000000127cYAAQ
|
[6]: https://opensource.com/resources?intcmp=7016000000127cYAAQ
|
||||||
[7]: https://opensource.com/article/21/1/zombies-zero
|
[7]: https://linux.cn/article-15808-1.html
|
||||||
[8]: https://opensource.com/article/21/1/zombies-2-one-many
|
[8]: https://linux.cn/article-15817-1.html
|
||||||
[9]: https://opensource.com/article/21/1/zombies-3-boundaries-interface
|
[9]: https://linux.cn/article-15859-1.html
|
||||||
[10]: https://opensource.com/article/21/1/zombies-4-exceptional-behavior
|
[10]: https://linux.cn/article-15860-1.html
|
||||||
[11]: https://opensource.com/article/19/9/mutation-testing-example-definition
|
[11]: https://opensource.com/article/19/9/mutation-testing-example-definition
|
||||||
[12]: https://stryker-mutator.io/
|
[12]: https://stryker-mutator.io/
|
||||||
[13]: https://opensource.com/sites/default/files/uploads/stryker-net.png
|
[13]: https://opensource.com/sites/default/files/uploads/stryker-net.png
|
||||||
@ -201,3 +208,4 @@ via: https://opensource.com/article/21/2/simplicity
|
|||||||
[17]: https://en.wikipedia.org/wiki/Kent_Beck
|
[17]: https://en.wikipedia.org/wiki/Kent_Beck
|
||||||
[18]: https://en.wikipedia.org/wiki/Ron_Jeffries
|
[18]: https://en.wikipedia.org/wiki/Ron_Jeffries
|
||||||
[19]: https://www.geepawhill.org/
|
[19]: https://www.geepawhill.org/
|
||||||
|
[0]: https://img.linux.net.cn/data/attachment/album/202306/05/153322mror89lsrwl9os3g.jpg
|
Loading…
Reference in New Issue
Block a user