【问题标题】:Need help breaking up Ruby code into methods需要帮助将 Ruby 代码分解为方法
【发布时间】:2011-08-17 09:56:25
【问题描述】:

我正在编写一个程序来更好地学习编程,我希望使用 RSpec 以便我也可以学习。然而,事实上,代码对 RSpec 不是特别友好,所以我需要将它分解为方法以便我可以测试它。

我不需要任何人为我编写代码,但也许可以解释我如何分解它。我是编程新手,这种事情(将事物分解为方法)对我来说是一个非常困难的概念。

这是我所拥有的:

  if params[:url] != ''
    url = params[:url] #line created so I can return url more easily (or, in general)
    words = params[:word].gsub("\n", ",").delete("\r").split(",") #.delete redundant?
    words.reject!(&:empty?)
    words.each(&:lstrip!)
    return "#{words}", "#{url}" #so that I can return url, not sure how to do that yet
  end

代码是一个 SERP 检查器,它需要一个 url 和关键字并检查它们在搜索引擎中的位置。

对于 url,它只是用户希望检查的网站的 url...换句话说,这将是他们希望在 Google 中检查其网站的关键字.. 用户可以填写输入形式如下:

Corn on the cob,
Fibonacci,
StackOverflow
Chat, Meta, About
Badges
Tags,,
Unanswered

【问题讨论】:

  • 首先,你有一个额外的end。那是什么搭配的?你想删除它吗?接下来,至少告诉我们代码的用途。您在 cmets 中添加了一些词,例如“url”,但除非您提供有关该代码的一般解释,否则这是没有意义的。
  • 这是一个 SERP 检查器,我将那个位添加到 OP 的末尾。也去掉了多余的一端。
  • 您能否详细说明params[:url]params[:word] 的格式?您对此有何期待?
  • 对于 url,它只是用户希望检查的网站的 url... 换句话说,这将是他们希望在 Google 中检查其网站的关键字.. 示例输入可能是:玉米棒、斐波那契、StackOverflow 聊天、Meta、关于徽章标签、、未答复的更多信息,在此 stackoverflow.com/questions/5829051/…

标签: ruby oop methods rspec


【解决方案1】:

您的代码采用一个草率的字符串并将其转换为一个干净的数组。您首先清理字符串,然后擦亮数组。您可以为这些操作定义方法。

def clean_up_words(str)
 #code to clean str
  str
end

def clean_up_list(arr)
  #code to clean arr
  arr
end

dirty_list = clean_up_words( params[:word]).split(',') 
clean_list = clean_up_list( dirty_list )

【讨论】:

    【解决方案2】:
    def foo params
      url = params[:url]
      url.empty? ? nil : [params[:word].scan(/[^\s\r,]+/), url]
    end
    
    • 您正在分配url = params[:url]。如果你打算这样做,你应该在其他地方提到同样的事情之前这样做,以减少在param上调用[]的次数。
    • 您对要提取的单词有几个条件。 (a) 用 "\n"、","、"\r" 分割,(b) 单词的长度不能为 0,(c) 白色字符应该被去掉。所有这些都可以放在一起作为scan(/[^\s\r,]+/)
    • 当 url 不为空时,您希望返回两个变量。在这种情况下使用数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多