简单 != 可以有Bug
“这种错误情况先不用处理了吧, 简单设计嘛!”
简单不是偷懒的借口. 简单设计是一种宏观的设计策略, 并不意味着微观上的偷工减料:
- 你可以没有这个功能, 但有的话必须是不能出错的.
- 是对无法预知的需求推迟设计决定, 而不是对已知的需求视而不见
- 这种错误情况可能确实不需要现在处理, 但理由不应该是简单设计, 而是价值和优先级分析
简单 != 功能不完整
“这个功能先不用做了, 简单设计嘛!”
当听到这种说法的时候, 请确保团队的理解是一致的:
- 在产品设计上可能也会有"简单设计"之类的原则, 尽可能的简化功能, 突出主要卖点
- 但我们提到简单设计的时候, 更多的是指软件架构不要过度设计, 而不是功能.
- 最终这个功能可能确实不需要现在做, 但理由不应该是用于指导架构设计的"简单设计", 而是价值和优先级分析.
简单设计 != 不预先设计
简单设计最大的争议在于: 现在还没有这个需求, 但我很清楚这是这个domain固有的问题, 我要不要为此做设计?
其实简单设计原则有一个隐含的前提: 架构是由需求决定的. 这可以是对的. 但它忽视了另外一个事实, 就是不只有一个架构, 不只有一种设计, 才能满足需求. 另外一个更有力的事实是: 可能存在一种基本的模型, 能适应不同的需求
如果你依靠对domain的洞察力, 可以设计出一种模型, 使得即使其考虑了尚未出现的需求, 也依然比现在的模型简单, 那何乐而不为?
争议在于模型复杂了怎么办? 那就按兵不动, 静观其变吧. 争议在于按兵不动日后再动的话可能成本更高. 这是有可能的, 我也不认为有什么算法可以算出此时该如何. 推荐大家看看< < Lean Architecture > >会有帮助
See also:
分享到:
相关推荐
《SoC设计的简明艺术》一书由Michael Keating撰写,深入探讨了系统级芯片(System on Chip,简称SoC)设计的复杂性和技巧。SoC设计是将多个电子电路和系统组件集成到一个单一的集成电路(IC)上的过程,旨在提高性能、...
This book is fast and simple way to get the idea behind each of the 29 popular design patterns. The book is not tied to any specific programming language and will be good for you as long as you have a...
Each chapter that follows describes one of twenty-three design patterns, recommends when to use it, and explains the impact that it will have on the larger design. The use of every pattern is ...
tion of simple components to perform a more complex logic function, analysis of a sequential logic circuit in terms of timing charts or state graphs, and use of a control circuit to control the ...
Voltage Topologies for LNAs and the Use of On-Chip Transformers 184 <br>x Radio Frequency Integrated Circuit Design 6.7 DC Bias Networks 187 6.7.1 Temperature Effects 189 6.8 Broadband ...
In it you will see simple guidelines based on lessons learned from real-life data discovery and unification, as well as useful visualization techniques. These in turn help you improve the quality of ...
easily approach a million dollars, even for a fairly simple design. If you do your own design, you can keep the details as the intellectual property of your company and get exactly what you want, at ...
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems....
Chapter 1, Getting Started with Material Design, introduces some of the basic precepts of Material Design, but concentrates largely on how to set up a development environment and create a simple ...
Build a simple app and run it on real and emulated devices Explore the WYSIWYG and XML approaches to material design provided within Android Studio Detect user activities by using touch screen ...
The book is organized to describe both simple and complex RTL design scenarios using VHDL. It gives practical information on the issues in ASIC prototyping using FPGAs, design challenges and how to ...
Systems On-Chip (SoCs) designs have evolved from fairly simple unicore, single memory designs to complex heterogeneous multicore SoC architectures consisting of large number of IP blocks on the same ...
database modeling, and database implementation by outlining a simple but reliable six-step process for accurately modeling user data on a Crow's Foot Relational Model Diagram, and then demonstrating ...
The buck is simple, has relatively few components and may be configured for a wide variety of applications. The choice of how to manage the control of the converter is not quite as straightforward a ...
This was done purposely to create a reasonably clean, simple, straightforward code base suitable for enhancement and extension by other programmers. Some capabilities were removed in this process - ...