Ruby Practical Object-Oriented Design in Ruby 中文版有了

lg2046 · 2013年12月18日 · 最后由 lulalala 回复于 2016年05月10日 · 4815 次阅读

这一个星期都在啃 Practical Object-Oriented Design in Ruby

看了五章 相当给力啊

今天一看像有中文版了 中文名叫 ruby 面向对象设计实践指南 果断下手

http://product.china-pub.com/3768963

就是不知道翻译怎么样

这书很好吗?好在哪里?好我也买!

POODR,这书好像很多人推荐,没看过,但应该值得一看,先收藏一下。

当你看到中文版时,一定要问一下自己,翻译作者写过 ruby 吗?

看看目录的翻译就知道是什么水平了

#1 楼 @chairy11 我个人看的英文原版。我觉得,对于我这种新手,非计算机背景的人来说,真的是帮助很大 因为主要缺的就是 Object Oriented 的思维。

具体好在哪里,我建议你可以直接下一本下来翻翻看,合适就看下去,不合适就丢掉

另外我说我一下我是怎么扎到这本书的。这个在 Amazon US 上面,Ruby 相关的的书里面,这本书的评价数量是最高的(80)。像 Rails Tuorial 好像才 50+,Ruby Programming Language 才 60+

#5 楼 @cqcn1991 这么牛 X?那得买一下……

#3 楼 @xds2000 你是说中文翻译很差?那就痛苦了……买,还是不买?

#4 楼 @xwf286 依你看是什么水平?


第 1 章 面向对象设计 1.1 设计赞歌 1.1.1 设计解决的问题 1.1.2 为何难以更改 1.1.3 实用的设计定义 1.2 设计工具 1.2.1 设计原则 1.2.2 设计模式 1.3 设计行为 1.3.1 设计失败 1.3.2 设计时机 1.3.3 设计评 1.4 面向对象编程简介 1.4.1 过程式语言 1.4.2 面向对象语言 1.5 小结 第 2 章 设计具有单一职责的类 2.1 决定类的内容 2.1.1 将方法分组成类 2.1.2 组织代码以便于更改 2.2 创建具有单一职责的类 2.2.1 示例程序:自行车和齿轮 2.2.2 为何单一职责原则很重要 2.2.3 确定一个类是否具有单一职责 2.2.4 确定何时做出设计决策 2.3 编写拥抱变化的代码 2.3.1 要依赖行为,不依赖数据 2.3.2 全面推行单一职责原则 2.4 最后是真实的轮子需求 2.5 小结 第 3 章 管理依赖关系 3.1 理解依赖关系 3.1.1 认识依赖关系 3.1.2 对象间的耦合 3.1.3 其他依赖关系 3.2 编写松耦合的代码 3.2.1 注入依赖关系 3.2.2 隔离依赖关系 3.2.3 移除参数顺序依赖关系 3.3 管理依赖方向 3.3.1 反转依赖关系 3.3.2 选择依赖方向 3.4 小结 第 4 章 创建灵活的接口 4.1 理解接口 4.2 定义接口 4.2.1 公共接口 4.2.2 私有接口 4.2.3 职责、依赖关系和接口 4.3 找出公共接口 4.3.1 示例程序:自行车旅游公司 4.3.2 构建意图 4.3.3 使用时序图 4.3.4 请询问"要什么",别告知"如何做" 4.3.5 寻求上下文独立 4.3.6 信任其他对象 4.3.7 使用消息来发现对象 4.3.8 创建基于消息的应用程序 4.4 编写能展现其(内在)最好面的代码 4.4.1 创建显式接口 4.4.2 善用其他类的公共接口 4.4.3 避免依赖私有接口 4.4.4 最小化上下文 4.5 迪米特法则 4.5.1 定义迪米特法则 4.5.2 违规的后果 4.5.3 避免违规 4.5.4 听从迪米特法则 4.6 小结 第 5 章 使用鸭子类型技术降低成本 5.1 理解鸭子类型 5.1.1 鸭子类型概述 5.1.2 让问题复杂些 5.1.3 发现鸭子类型 5.1.4 鸭子类型的后果 5.2 编写依赖于鸭子类型的代码 5.2.1 识别出隐藏的鸭子类型 5.2.2 信任你的鸭子类型 5.2.3 记录好鸭子类型 5.2.4 在鸭子类型之间共享代码 5.2.5 合理选择鸭子类型 5.3 克服对鸭子类型的恐惧 5.3.1 使用静态类型颠覆鸭子类型 5.3.2 静态类型与动态类型 5.3.3 拥抱动态类型 5.4 小结 第 6 章 通过继承获得行为 6.1 理解经典的继承 6.2 弄清使用继承的地方 6.2.1 从一个具体类开始 6.2.2 嵌入多种类型 6.2.3 找出嵌入的类型 6.2.4 选择继承 6.2.5 描绘出继承关系 6.3 误用继承 6.4 找出抽象 6.4.1 创建抽象父类 6.4.2 提升抽象行为 6.4.3 从具体分离出抽象 6.4.4 使用模板方法模式 6.4.5 实现所有模板方法 6.5 管理父类与子类之间的耦合 6.5.1 理解耦合 6.5.2 使用钩子消息解耦子类 6.6 小结 第 7 章 使用模块共享角色行为 7.1 理解角色 7.1.1 找出角色 7.1.2 组织职责 7.1.3 删除不必要的依赖关系 7.1.4 编写具体代码 7.1.5 提取抽象 7.1.6 查找方法 7.1.7 继承角色行为 7.2 编写可继承的代码 7.2.1 识别出反模式 7.2.2 坚持抽象 7.2.3 重视契约 7.2.4 使用模板方法模式 7.2.5 预先将类解耦 7.2.6 创建浅层结构 7.3 小结 第 8 章 组合对象 8.1 Parts 组合成 Bicycle 8.1.1 更新 Bicycle 类 8.1.2 创建 Parts 层次结构 8.2 组合成 Parts 对象 8.2.1 创建 Part 8.2.2 让 Parts 对象更像一个数组 8.3 制造 Parts 8.3.1 创建 PartsFactory 8.3.2 借助 PartsFactory 8.4 组合成 Bicycle 8.5 继承和组合的抉择 8.5.1 接受继承带来的后果 8.5.2 接受组合带来的后果 8.5.3 选择关系 8.6 小结 第 9 章 设计最划算的测试 9.1 意图测试 9.1.1 了解测试的意图 9.1.2 了解测试的内容 9.1.3 了解测试的时机 9.1.4 了解测试的方法 9.2 测试输入消息 9.2.1 删除未使用的接口 9.2.2 证明公共接口 9.2.3 隔离测试对象 9.2.4 注入使用类的依赖关系 9.2.5 将依赖关系注入成角色 9.3 测试私有方法 9.3.1 在测试过程中忽略私有方法 9.3.2 从测试类里移除私有方法 9.3.3 选择测试私有方法 9.4 测试输出消息 9.4.1 忽略查询消息 9.4.2 证明命令消息 9.5 测试鸭子类型 9.5.1 测试角色 9.5.2 用角色测试验证测试替身 9.6 测试继承代码 9.6.1 指定继承接口 9.6.2 指定子类责任 9.6.3 测试独特行为 9.7 小结 后记

#8 楼 @chairy11 我手里有一本英文原版,正在看,内容很赞。中文的没读过,不乱评价。但是仅书名的翻译就让我感觉很别扭。。

#9 楼 @loveky 哎呀,我是担心英文版的我读不下去,读英文貌似要看心情啊,心情好读得比较顺畅,心情不好常常会发现自己同一段话看了几遍还是没入脑,直接走神了…… 中文版的话阅读速度快,因为我大脑太习惯阅读中文了,建成高速通路了……

不过有时看中文也的确别扭,当你习惯一些英文名词时,这些名词已经直接跟你的具体理解连接起来了。看中文反而要先自己翻译成英文去理解。 比如看到“接口”这样的名词,我宁可他们直接说“Interface”

#10 楼 @chairy11 中文书读的快,不见得理解了 (我就这样)。我读英文书的时候一般环境越安静越好,越少打扰越能读进去,否则跟你一样,直接 走神了

我看了英文版的前五章 再看作者翻译的目录真的不敢恭维 估计大部分是使用的翻译软件 反正买就买了 对照着看吧

#8 楼 @chairy11 不是很差,还行,中规中矩,可以当做参看。

#12 楼 @lg2046 #13 楼 @xwf286 我看了看译者之前翻译的其它书,貌似不是 RUBY 相关的,要不我还是咬咬牙看英文的算了……

不建议看任何书名中带有 OO 的书

好多自行车

這本書翻譯有點糟糕。比如說這句話 "However, the fact that A must change if B changes is the least of the problems with this code."

被翻成「然而,如果 B 變化了,則 A 也必須修改。至少,這件事實是這段程式碼所存在的問題。」重點就是 the least of 被當作 at least 翻譯了。

要是你懂翻譯錯再哪,那建議看英文版。不懂才看中文版囉。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号