Chapter 2 The Nature of Complexityapp
第 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.ide
本書就是關於,如何設計軟件系統,能夠使得複雜度最小化。第一步就是要認識敵人。那到底什麼是「複雜度」呢?怎麼判斷系統過於複雜?是什麼讓系統變得複雜?本章節會在高層次上解答這些問題;後續章節會爲你展現,如何從低層次上遵守一系列特定的結構上的特性去認識複雜度。
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.ui
認出複雜度的能力,是一種相當重要的設計技巧。它能夠讓你在投入大量精力以前,就能定位出問題,並且還能讓你在多個方案中找到好的選擇。看出一個設計是否表面上比實質上更簡單,比起建造一個簡單的設計,是更容易的。可是一旦你能看出系統過於複雜,你就能夠用這項能力去構造「導向簡約的哲學」。若是設計看起來複雜,用另外的方法看看能不能讓它簡化。久而久之,你就會注意到,是有特定的技術讓設計走向簡化,而這些技術之外的東西,就關係到了複雜性。這樣你就能夠更快速地創造更簡約的設計。
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.this
本章節還列出了一些基礎的假設,來爲書中剩下的內容鋪路。餘下章節會用到本章給出的內容,並用於論證一系列的改進和結論。