首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命名Ruby方法

命名Ruby方法
EN

Stack Overflow用户
提问于 2017-01-14 21:16:17
回答 5查看 301关注 0票数 2

给一堂课:

代码语言:javascript
复制
class Shell
  attr_reader :spiral
  def initialize spiral
    @spiral = spiral
  end

  def ?????
    # do stuff...
  end
end

some_shell = Shell.new([[1,2],[4,3])
some_shell.spiral #=> [[1,2],
                  #    [4,3]]
some_shell.?????  #=> [1,2,3,4]

?????命名更有意义吗?

代码语言:javascript
复制
unwrap_spiral

代码语言:javascript
复制
unwrapped_spiral

unwrap_spiral似乎在对some_shell说,“我要你解开那个螺旋”,unwrapped_spiralsome_shell说,“我要你给我一个没有包装的螺旋”。

我在POODR上读过

请求发送方所需内容的消息与告知接收方如何行为的消息之间的区别可能看起来很微妙,但其后果是重大的。

选择unwrapped_spiral似乎更好。

这有意义吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-14 21:42:47

命名事物是经典的两件(三件)难做的事情之一。撇开笑话不说,我的指导原则如下:

  1. 我是在询问对象的属性吗?那么,我的方法名称是一个名词,表示该属性。
  2. 我是否将对象转换为另一种形式?然后我的方法名为"to_target“。在您的例子中,可能是to_unwrapped。
  3. 我在要求对象内部进行一些处理吗?那么我的方法名就是一个动词。例如,“攀爬”来爬升螺旋。
  4. 为了完整起见,我是从另一个对象构建对象吗?然后我的工厂方法通常从"from_source“调用。假设在你的例子中,“from_unwrapped。”
票数 3
EN

Stack Overflow用户

发布于 2017-01-14 21:19:42

Ruby似乎不寻常地强调名称的意图及其含义。例如,unwrap_spiral意味着它可能会就地执行操作,除非有一个像unwrap_spiral!这样的压缩方法表明它没有这样做。

unwrapped_spiral可能太冗长了。现在还不清楚为什么spiral会在unwrapped可能足够的情况下这么多地影响到这一点。

另一件要考虑的事情是按照相同的字母顺序组织在spiral上操作的方法:spiral_unwrapspiral_unwrapped

票数 2
EN

Stack Overflow用户

发布于 2017-01-14 22:14:25

实际上,我认为已经有一个名为flatten的方法,它似乎产生了相同的结果。

http://apidock.com/ruby/Array/flatten

如果您有一个更高级的自定义方法,我将使用unspiral

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41655073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档