翻译软件设计的哲学-2 复杂性的本质

Posted ken1992code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译软件设计的哲学-2 复杂性的本质相关的知识,希望对你有一定的参考价值。

Chapter 2 The Nature of Complexity

第 2 章 复杂性的本质

This book is about how to design software systems to minimize their complexity. The first step is to understand the enemy. Exactly what is “complexity”? How can you tell if a system is unnecessarily complex? What causes systems to become complex? This chapter will address those questions at a high level; subsequent chapters will show you how to recognize complexity at a lower level, in terms of specific structural features.

本书就是关于,如何设计软件系统,可以使得复杂性最小化。第一步就是要认识敌人。那到底什么是“复杂性”呢?怎么判断系统过于复杂?是什么让系统变得复杂?本章节会在高层次上解答这些问题;后续章节会为你展示,如何从低层次上遵照一系列特定的结构上的特性去认识复杂性。

The ability to recognize complexity is a crucial design skill. It allows you to identify problems before you invest a lot of effort in them, and it allows you to make good choices among alternatives. It is easier to tell whether a design is simple than it is to create a simple design, but once you can recognize that a system is too complicated, you can use that ability to guide your design philosophy towards simplicity. If a design appears complicated, try a different approach and see if that is simpler. Over time, you will notice that certain techniques tend to result in simpler designs, while others correlate with complexity. This will allow you to produce simpler designs more quickly.

认出复杂性的能力,是一种至关重要的设计技巧。它可以让你在投入大量精力之前,就能定位出问题,而且还能让你在多个方案中找到好的选择。看出一个设计是否表面上比实质上更简单,比起建造一个简单的设计,是更容易的。但是一旦你能看出系统过于复杂,你就可以用这项能力去构造“导向简约的哲学”。如果设计看起来复杂,用另外的方法看看能不能让它简化。长此以往,你就会注意到,是有特定的技术让设计走向简化,而这些技术以外的东西,就关系到了复杂性。这样你就可以更快速地创造更简约的设计。

This chapter also lays out some basic assumptions that provide a foundation for the rest of the book. Later chapters take the material of this chapter as given and use it to justify a variety of refinements and conclusions.

本章节还列出了一些基础的假设,来为书中剩下的内容铺路。余下章节会用到本章给出的内容,并用于论证一系列的改进和结论。

以上是关于翻译软件设计的哲学-2 复杂性的本质的主要内容,如果未能解决你的问题,请参考以下文章

2020荐书:软件设计的哲学

软件设计的哲学:增加复杂度的12中危险信号

软件设计的哲学:第四章 深度封装模块

软件设计的哲学: 第十章 定义不存在错误

翻译软件设计的哲学-0 序言

学习Linux程序设计之路UNIX程序设计哲学