使用风险的Ruby功能

时间:2011-04-27 18:17:00

标签: ruby

作为一名Ruby程序员,您是否觉得任何时候使用任何有点冒险的功能都可能是因为它的奇怪行为?它可能有很好的文档记录,但在调试时很难找到,或者在记忆时违反直觉?

我通常会试图远离String#gsub!。文档说“执行String#gsub的替换,返回str,或者 nil ,如果没有执行替换。”所以,如果没有什么可以替代,那么它将返回零。实际上我没有看到任何用例,这很方便。

那么,根据您的经验,您还有什么想补充的吗?

4 个答案:

答案 0 :(得分:2)

returnlambda或阻止中使用Proc。语义are well defined,但你会弄错,你会得到一个LocalJumpError

答案 1 :(得分:1)

Ruby的元编程功能可以以非常危险的方式使用。我已经看到了试图在代码类(如String或Array)上运行时重新定义常用方法的代码,虽然我可以看到这对于一个很小的临时脚本是可接受的,但我认为这不是一个好主意。具有许多依赖性或许多维护者的复杂应用程序。

答案 2 :(得分:1)

嗯,Ruby最广泛滥用的危险特征当然是eval字符串。在绝大多数情况下(如果不是全部),可以使用其他方法避免使用其他方法,通常是define_methodconst_getconst_set等。

答案 3 :(得分:1)

throw / catch(与begin / rescue不一样!)基本上是GOTO,这可能被认为是一个冒险的功能以任何语言使用。