数据结构 – 为什么在一个数据结构上运行100个函数比在10个数据结构上运行10个函数更好

我已经看到这个引用在很多地方:

“It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.” —Alan Perlis

但我从来没有见过它解释了为什么这应该是真的。这只是一个想法,你应该尝试从第一个导出其他9个数据结构,以避免重复的数据?我觉得我缺少一些上下文。

最佳答案
报价来自Alan Perlis的Epigrams on Programming,它于1982年出版。

这个引用的含义很好地体现在Lisp,其中有许多功能操作和处理列表,你可以完成很多只是列表和操作列表的功能的分类,这使得它们更强大比任何单一用途的数据结构。

Lua,作为另一个例子,uses tables to simulate classes.为什么使用表来创建对象,而不是创建语言级类和面向对象语言的对象?由于你的对象现在是一个表,你可以使用任何数量的函数为你的对象上的表定义,免费!更好的是,我们不必使用类特定的语法来混淆语言,并且必须从我们想要的类中重新定义函数。

Perlis说的绝对是一个突出的思想模式在Lisp和一般的functional programming。您的一个数据结构上的100个函数可以以许多独特的方式组合在一起,因为它们都在相同的数据结构上操作,但是你不能真正地将10个函数混合到10个数据结构上,因为它们只被定义以处理其特定的数据结构。

更现代和更简单的变化是从抽象的角度思考。如果我们用Java编写代码,你宁愿在List接口上写100个函数,或者同一组十个函数,一次为ArrayList,一次为LinkedList,一次为…

转载注明原文:数据结构 – 为什么在一个数据结构上运行100个函数比在10个数据结构上运行10个函数更好 - 代码日志