我尝试过搜索数据结构/算法书籍,这些书籍提供了Objective-C或其他支持关键字消息语法的语言的示例,但都没有成功。
我对此感兴趣的原因是,我真的认为关键字语法会帮助我理解代码的意图,我发现在具有典型函数调用语法的语言中,我必须花更长的时间来思考这一点。
一个很好的例子是以下代码片段,它来自C:中的SplayTree实现
/* Continue down the tree. */
n = splay_tree_splay_helper (sp, key, next, node, parent);
函数名是毫无帮助的,即使有注释,我也必须彻底阅读代码才能知道那里到底发生了什么。
我知道从技术上讲,任何一段C代码都是有效的Objective-C,但我正在寻找能够利用像Objective-C这样的良好对象模型来构建算法实现的东西,因为我相信生成的代码更易于维护。在算法设计的性能受限的空间里,这似乎违反了直觉,但我看过很多算法书,其中有惯用的Ruby、Python、Javascript等示例。
基本上,我正在寻找任何具有良好对象模型的东西,它允许非常描述性的关键字消息,无论是Objective-C还是Smalltalk家族中的任何其他东西(尽管可能不太可能)。
你为什么想要一本书?只需下载一个smalltalk环境并阅读整个实际来源。打开系统浏览器,选择"集合"类别之一(类的集合),然后开始浏览代码(额外的列用于消息类别)。打开一个工作区,键入Object cmd-B(或ctrl-B,用于浏览),自己看看为什么发明了单一责任原则。使用层次结构、发送者和实现者浏览代码。
我觉得你找错东西了。
一本好的算法和数据结构书会尽量不把时间浪费在难以阅读的源代码上。我认识的大多数好书大部分时间都花在高水平的解释上,只以小片段的形式展示实际的代码,这些代码可以很容易地理解,与所使用的语言无关,也与你对它的熟练程度无关
有些人对splay树的实现有多复杂并不重要。只要你知道splay树是什么,你就应该能够实现自己的版本,而不需要太多关注hit。
最后,一个好的对象模型和好的语法并不是一切的终点。许多数据结构使用的并集类型在OO风格中并没有很好地实现,而且命名模式和语法应该能够很快适应。