知识卡片

抽象简化的双刃剑

普通读书笔记卡 · 1958.m.2

内容

细化(高细节与低细节表现形式间的关系)的价值在于缩小细节能看清问题本质:柯尼斯堡七桥问题——能否一次不重复走完两岛间的七座桥——欧拉抽象掉城市名字、桥的样子,只留”点与连接”结构,由此开创图论。但过度简化也会埋雷:Josh Bloch发现,过去50年几乎所有快速排序实现都用(x+y)/2求中点,x、y足够大时会整数溢出。补救方法不是放弃抽象,而是把导致问题的细节重新纳回抽象模型。

参考来源

- 位置:《恰如其分的软件架构》第13章《模型关系》13.7.3-13.7.4小节《细节放大和缩小》《挑战和优势》(源文件:_epub-src/OEBPS/text00135.html) - 结论依据:原文用欧拉解决柯尼斯堡七桥问题创立图论的例子说明忽略细节能看清问题本质,并用Josh Bloch发现的50年快速排序/二分查找中点计算溢出缺陷说明过度简化模型会遗漏关键细节,解决办法是把导致问题的细节重新纳入更详细的模型。 - 原始内容:一个忽略细节的著名例子是关于柯尼斯堡桥的例子……欧拉……创立了图论……Josh Bloch发现了一个缺陷,在过去50年里面,几乎所有的快速排序实现都存在着这个缺陷……解决这个风险的标准方法是,找到导致这个问题的细节,然后把它们放到更抽象的模型中。