我尝试过搜索数据结构/算法书籍,这些书籍提供了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系列中的任何其他内容。
答案 0 :(得分:2)
我认为你在寻找错误的东西。
一本好的算法和数据结构书籍会尽量不浪费你的时间来阅读难以理解的源代码。我所知道的大多数好书大部分时间都在高层次上解释事物,并且只在小片段中显示实际代码,这些代码可以很容易地被理解,与所使用的语言无关,以及你对它的熟练程度。
一些人对splay树的实现是多么复杂并不重要。只要你知道splay树是什么,你应该能够实现自己的版本,而不会看太多。
最后,一个好的对象模型和漂亮的语法并不是万能的。许多数据结构都使用了在OO风格中不能很好地实现的联合类型,命名模式和语法是你应该能够非常快速地习惯的东西。
答案 1 :(得分:2)
你为什么要一本书?只需下载smalltalk environment并阅读整个实际来源。打开系统浏览器,选择其中一个集合类别(类集合)并开始浏览代码(额外列用于消息类别)。打开工作区,键入Object cmd-B(或ctrl-B,用于浏览),并亲自查看为什么单一责任原则被发明。使用层次结构,发件人和实现者浏览代码。