本节书摘来自华章出版社《effective ruby:改善ruby程序的48条建议》一书中的第2章,作者 [美]彼得 j.琼斯(peter j. jones),更多章节内容可以访问云栖社区“华章计算机”公众号查看
类、对象和模块
面向对象程序设计(oop)是ruby的谋生之道。ruby通常被认为是一门纯粹的面向对象语言,因为ruby中的任何事物都是或者可以被转化为一个对象,我是说每个
事物。
ruby的对象模型受到smalltalk的严重影响,因此,如果你是由c++或java转型而来的程序员,可能会觉得这和你曾使用过的其他语言有些不同。类也是对象这个事实足以让你的思维陷入无限递归模式。此外还有一些陷阱,如子类不会自动初始化其超类,以及定义变量和调用setter方法存在模糊的概念。本章将针对这些问题进行整理和说明。
此外,我将阐述当你创建类、子类,并将模块引入它们时,ruby如何真正地构建继承体系(inheritance hierarchies)。了解了这些信息,你就能够在使用大型框架如ruby on rails时掌握一项重要的技能:追踪出方法是如何被引入类中的以及它们从何
而来。
理解了ruby对oop的偏好将帮助你做出更好的决定并避免长周期的设计错误。尤其是遇到ruby的开放和动态特性时,这些特性可以用来创建抽象泄漏并忽略封装。二者都可能导致噩梦般的维护和持续到深夜的调试。而我将帮你避免这些问题。