【发布时间】:2013-04-30 18:27:59
【问题描述】:
我正在开发一个 ruby 项目,我们计划在其中使用 ruby 字符串进行一些操作。有些操作很简单(比如计算单词的数量),有些则比较复杂(比如检查给定字符串的语言是否正确)。
实现这一点的一种可能方法是使用额外的方法修补String 类,不修改任何现有方法,并添加"some string".word_count 和"some string".cjk? 等行为。
基于FileUtils 的另一种方法是创建一个充满方法的类或模块,并始终使用字符串作为参数,例如OddClassName.word_count("some string") 和OddClassName.cjk?("some string")。由于可读性,我们更喜欢第一个。
我知道猴子修补第一个替代方案中描述的基本类可能会发生名称冲突。但是,如果这是主应用程序,而不是库,我应该担心它吗?
所以,问题是:
- 向 ruby 基类添加方法是一种不好的做法吗?如果是,是在所有情况下还是仅在某些情况下?
- 完成此任务的最佳方法是什么?
- “OddClassName”的名称可能是什么?
请提出任何替代方案。
【问题讨论】:
-
您使用的是哪个版本的 Ruby?我相信 2.0 中有一些不同的猴子补丁选项
-
@CharlesCaldwell 我使用的是 1.9,但如果适合,也可以在您的答案中添加 2.0。
-
您不需要使用标题来标记问题中的部分。 StackOverflow 的外观和感觉更具对话性且不那么正式。删除标题,您的问题将非常顺利。不过,请务必将“Ruby”之类的专有名称大写。
标签: ruby monkeypatching