use*_*541 0 ruby ruby-on-rails
对于返回布尔值的方法,在#中结束调用似乎很正常,但在某些代码中,我看到这并不是一贯的.例如,某些功能如create和save没有?在我看到的一些代码的最后.
这是不好的做法/不一致.它应该在返回布尔值的任何地方吗?还是偶尔会遗漏?
ActiveRecord save方法不会提出问题,它只执行操作并返回所请求操作的状态.返回值(即状态)是布尔值是无关紧要的.
诸如Array#include?或者String#start_with?提出问题的方法,因此他们?的名字上有后缀.
因此,返回值不是决定方法名称是否以问号结尾,而是方法的意图:如果调用方法主要是询问是/否问题,那么它会得到一个问号; 如果调用该方法主要执行其他操作,那么即使它恰好返回一个布尔值,它也不会得到问号.
当然,现实并非那么简单.
File.size?返回nil或Integer进一步混淆事项,还有File.size哪些回报Integer.这两个都提出了一个问题 - "名称为X的文件的大小是多少?" -唯一的区别是,File.size?返回nil,如果该文件不存在或大小为零(叹气),而File.size对不存在的文件没有规定的行为.然后有File#size(但没有File#size?)作为同一个类的实例方法,File#size询问相同的问题File.size,File.size?但没有问号.
然后Float我们有:
还有其他一些例子(例如奇怪命名的Set#add运算符,Set#delete?vs Set#delete,?vs attr_reader,...),其中pancakes-method不返回布尔值,但它们是异常并且突出,因为它们与通常的核心行为不一致.
我们甚至可以提起pancakes.如果你说:
attr_reader :pancakes
Run Code Online (Sandbox Code Playgroud)
然后你得到一个pancakes?方法,你可以用来问" pancakes财产的价值是多少?".请注意,您没有获得问题的?方法,您只需获得一个save访问器方法.
- Array#include?核心中的方法行为有些不一致,但数字强烈倾向于"用"是或否答案"提出问题.就非核心代码而言,人们可以做任何他们想做的事情,所以毫无疑问,那里存在巨大的不一致.
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |