Ruby是否弃用了错误的File exists方法?

时间:2018-01-10 17:15:52

标签: ruby methods naming-conventions

File.exist?的文档说:

  

如果指定的文件存在,则返回true

注意使用的最后一个词; “存在”。这是对的。 “文件存在”没有结尾 s 不正确。

方法File.exists? 存在,但他们不赞成使用此方法。我认为应该是另一种方式。我错过了什么?

另外,值得注意的是其他语言/库使用 exists ,例如Java.NET

同样,“此等于” - 但Ruby使用equal,再次删除结尾 s 。我感觉Ruby正在积极地走向另一个方向而不是主流。但那必须有一个理由吗?

2 个答案:

答案 0 :(得分:1)

这在很大程度上是一个主观的呼吁。你是否读过这个电话"这个文件是否存在?"或"文件存在"?两个读数都有其优点。

从历史上看,Ruby有很多别名方法,如sizelength,但最近似乎核心团队正在努力关注更广泛适用的单一,一致的约定。

您必须仔细查看围绕此处决策的内部邮件列表上的对话。我无法轻易找到它们,只有那些处理这些更改的人会弹出弃用警告。

Ruby核心团队是讲不同语言但母语是日语的人的混合体,所以或许这可以指导其中一些决策。可以优先避免动词上的奇怪变形。

答案 1 :(得分:0)

我同意 if File.exists?('x.txt') 读起来比复数形式更自然,这可能是 Matz 使用别名的意图。就我而言,这种特殊的弃用被误导了。

然而复数形式的一般偏好可能很好地用于处理可枚举/集合,当与这样的习语一起使用时,复数形式是有意义的:

pathnames.select(&:exist?)