0

我尝试搜索以 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 系列中的任何其他东西(尽管可能不太可能)。

4

2 回答 2

2

我认为你正在寻找错误的东西。

一本好的算法和数据结构书籍会尽量不把你的时间浪费在难以阅读的源代码上。我所知道的大部分好书都花大部分时间在高层次上解释事物,并且只以小片段显示实际代码,这些小片段可以很容易地理解,而与所使用的语言和你对它的熟练程度无关。

某些人对展开树的实现有多复杂并不重要。只要您知道 splay 树是什么,您就应该能够实现自己的版本,而无需过多关注 hit。

最后,一个好的对象模型和好的语法并不是万能的。许多数据结构使用的联合类型在 OO 风格中实现得不是很好,命名模式和语法是你应该能够很快习惯的东西。

于 2012-03-26T19:43:30.263 回答
2

你为什么想要一本书?只需下载一个smalltalk 环境并阅读整个实际源代码。打开系统浏览器,选择 Collections 类别之一(类的集合)并开始浏览代码(额外的列用于消息类别)。打开一个工作区,键入 Object cmd-B(或 ctrl-B,用于浏览)并亲自了解为什么发明了单一职责原则。使用层次结构、发送者和实现者浏览代码。

于 2012-03-27T19:21:42.100 回答