先确保解决方案简单可用,再考虑通用性和复用性
来源:互联网 发布:php剔除数组重复数据 编辑:程序博客网 时间:2024/05/17 18:40
作者:凯佛林·享尼(KevlinHenney)
许多用来实现基础设施的代码,包括组件框架、类库、基础服务(fundation services),普遍存在一个问题,它们的设计一味强调通用性而不考虑具体应用,导致出现许多令人困惑的可选项和不确定因素,这些功能常常不是被闲置,就是被误用,甚至毫无价值。多数开发者开发的是专用系统,无限制的通用性对他们的帮助不大。寻求通用性最好的办法是研究现有的具体案例,抓住问题的实质,从根本上得出通用解决方案。通过经验提炼的简单方案,远胜过不切实现的通用性。
如果存在多个可实施方案难以取舍,“先简单后通用”原则可以成为最终的评判标准。挑选基于具体需求的解决方案,放弃鼓吹通用性的复杂方案。而且简单的方案在实践中完全有可能表现出更好的通用性。退一步来说,修改简单方案满足需求,也比修改通用方案容易,因为通用方案常常在关键的地方使不上劲儿。
虽然许多的能用设计的初衷是好的,但还是难逃失败的命运。设计组件的首要任务是抓住具体需求,满足需求,通用性来自对需求的理解,理解之后才能简化。提炼通用性可以使我们更加接近问题的本质,通过分析己有案例可以获得清晰、简洁、有依据的规律和方法。然而提炼通用性往往流于形式,南辕北辙,不但无法减少复杂性,反而增加复杂性。追求理论上的通用性通常会导致解决方案脱离实际的开发目标。由于这种通用性基于错误的假设,所以无法提供有价值的方案,只会带来棘手的问题,增加开发人员和架构师将来必须面对的偶发复杂性(accidental complexity)。
虽然很多架构师重视通用性,但这样做是有前提条件的。并非所有人都需要通用性,愿意为它掏钱,具体情境要具体分析,有针对性的解决方案才有价值。我们提供具体解决方案时,无须排斥通用性和灵活性,但是如果过早脱离具体情况,只会迷失在无限的可能性里,被复杂的配置选项、超负荷的参数列表、冗长啰嗦的接口,以及存在缺陷的抽象所淹没。追求随心所欲的灵活性,会使人们在无意中错失(有些人甚至故意忽略)更简单的设计和更有价值的特性。
- 先确保解决方案简单可用,再考虑通用性和复用性
- 17 先确保解决方案简单可用,再考虑通用性和复用性
- 58 先考虑原则、公理和类比、再考虑个人意见和口味
- 先考虑原则、公理和类比、再考虑个人意见和口味
- C#获取外网IP和地理位置(确保可用)
- 周鸿祎:大学生应先加入创业公司再考虑单干
- MongoDB如何确保高可用
- 路灯 简单的排序和考虑边界
- 移动设备界面自适应兼容性问题的提出和解决方案考虑
- 移动设备界面自适应兼容性问题的提出和解决方案考虑
- 解决方案盲目追求通用性是对是错?
- 为什么一些“不必要”的公司会成功?先考虑下维生素和止痛药的区别
- 博客盈利请先考虑这七点
- "目前没有可用会话"和"绝对亲和力"解决方案
- 数据库高可用和分区解决方案-MySQL 篇
- 简要验证先构造的对象后析构(某公司面试题---不考虑静态和全局对象)
- [cocos2d-x]cocos2d和cocos2d-x的一些通用性
- C语言字符类型和整数类型的通用性
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
- 【SDOI2008】【BZOJ2049】Cave 洞穴勘测
- lca集锦
- Android Stadio中导入第三方包
- mysql存储过程 例子 游标cursor 循环嵌套 事物
- 先确保解决方案简单可用,再考虑通用性和复用性
- Java内部类详解
- [java] Add Digits 数字相加
- 使用异或求两个数的较小值
- Codeforces Round 459 D. Pashmak and Parmida's problem 树状数组求逆序数 变形
- android 5.1 源码编译adb
- C语言中运算符优先级
- linux 下安装ssh
- 华为OJ(字符串匹配)