猴子修补基础ruby课是一种不好的做法?

猴子修补基础ruby课是一种不好的做法?,第1张

概述我正在开发一个 ruby项目,我们计划在其中使用 ruby字符串进行一些 *** 作.有些 *** 作很简单(比如计算单词数),有些 *** 作比较复杂(比如检查给定字符串是否使用正确的语言). 实现这一点的一种可能方法是使用额外的方法修补String类,而不修改任何现有方法,并添加“some string”.word_count和“some string”.cjk?等行为. 另一种基于FileUtils的方法是创建一个 我正在开发一个 ruby项目,我们计划在其中使用 ruby字符串进行一些 *** 作.有些 *** 作很简单(比如计算单词数),有些 *** 作比较复杂(比如检查给定字符串是否使用正确的语言).

实现这一点的一种可能方法是使用额外的方法修补String类,而不修改任何现有方法,并添加“some string”.word_count和“some string”.cjk?等行为.

另一种基于fileUtils的方法是创建一个充满方法的类或模块,并始终使用字符串作为参数,如OddClassname.word_count(“some string”)和OddClassname.cjk?(“some string”).由于可读性,我们更喜欢第一个.

我理解猴子修补基本类,如第一个替代方案中所描述的可以有名称冲突.但是,如果这是主要应用程序,而不是库,我应该担心它吗?

所以,问题是:

>将方法添加到ruby基类是一种不好的做法吗?如果是,那是在所有情况下还是仅在某些情况下?
>实现这一目标的最佳方法是什么?
>’OddClassname’的名称是什么?

请建议任何替代方案.

解决方法 除非你编写没有PatchedClass相关行为的奇怪方法(例如,String.monkeyPatchForMakingJpegFromString相当糟糕,但Jpeg.fromString足够好了),猴子修补不被认为是一种不好的做法.

但是如果您的项目相当大,那么您在其中使用的库可能碰巧有碰撞的补丁,因此您可能还有一个问题就是所有这些修补程序.在Ruby 2.0中,改进得到了帮助.它们的工作方式如下:定义一个模块,在其中优化(甚至核心)类,然后在必要时使用该模块.因此,在您的代码中它的工作原理如下:

YourClass.new.refinedMethodFromCoreClass #=> some result

CoreClass.refinedMethodFromCoreClass

产生未定义的方法异常.

这些都是猴子修补的东西:猴子修补是有用和方便的,但改进添加了一些功能,使您的代码更安全,可维护和整洁.

总结

以上是内存溢出为你收集整理的猴子修补基础ruby课是一种不好的做法?全部内容,希望文章能够帮你解决猴子修补基础ruby课是一种不好的做法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1281442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存